C# Приложение Windows предотвращает выключение / отключение Windows

StackOverflow https://stackoverflow.com/questions/2498432

  •  21-09-2019
  •  | 
  •  

Вопрос

Я написал приложение C# Windows Forms, а не службу (оно используется только тогда, когда пользователь входит в систему и имеет графический пользовательский интерфейс), в котором есть фоновый поток, работающий в бесконечном цикле.

Однако, когда я пытаюсь выключить Windows (7), это говорит мне, что программа не позволяет ее выключить или отключиться, и спрашивает, хочу ли я принудить отключение.

Теперь есть ли возможность для моей программы осведомлена (получить обработчик) окон, пытающихся бросить ее или выйти?

Итак, мне нужно, чтобы приложение осознало, когда Windows пытается уйти.

Заранее спасибо.

РЕДАКТИРОВАТЬ: Спасибо за отличный совет! Возможно ли использовать эту идею с событием закрытия формы, если у нее есть обработчик событий отмены?

Это было полезно?

Решение

public Form1()
{
    InitializeComponent();

    this.FormClosing += new FormClosingEventHandler(Form1_FormClosing);
}

void Form1_FormClosing(object sender, FormClosingEventArgs e)
{
    // Or any of the other reasons suitable for what you want to accomplish
    if (e.CloseReason == CloseReason.WindowsShutDown)
    {
        //Stop your infinite loop
    }
}

Другие советы

Вы называете этот поток «фоновым потоком», но есть ли он IsBackground = true; ?
Система остановит только нить, которая делает.

Я думаю Захватить консольную выход C# Также должно быть использовано в вашем сценарии.

Кроме того, возможно, достаточно настроить вашу ветку как фоновая тема?

Взглянуть на Microsoft.win32.systemevents.sessionending мероприятие.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top