Запуск приложения при завершении работы Windows - PullRequest
3 голосов
/ 14 октября 2011

У меня есть программа winforms, в которой есть кнопка «Выход», которая запускает событие, которое выполняет очистку, а затем запускает Application.Exit(); для выхода из программы.

Но так как программа является приложением в трее, я часто забываю закрыть программу, используя эту кнопку выхода, и вместо этого просто нажимаю на выключение Windows. Если я это сделаю, событие не будет вызвано и, следовательно, не очищается.

Мой вопрос: есть ли событие, на которое я могу рассчитывать при использовании различных методов закрытия, таких как выключение Windows?

Я видел, что могу переопределить OnClosing - но так ли это?

Edit:

Все ответы сработали. Но в итоге я получил:

Application.ApplicationExit += new EventHandler(Application_ApplicationExit);

Ответы [ 2 ]

4 голосов
/ 14 октября 2011

Я думаю, вы могли бы использовать это:

void Init()
{
    SystemEvents.SessionEnding += 
        new SessionEndingEventHandler(SystemEvents_SessionEnding);
}

void SystemEvents_SessionEnding(object sender, SessionEndingEventArgs e)
{
    // Do what you need
}

Ссылка на gool для чтения может быть this

РЕДАКТИРОВАНИЕ: Это решение работает даже в неформальном приложении (консоли, сервисе и т. Д.).

3 голосов
/ 14 октября 2011

Да, чтобы найти различные методы закрытия, переопределяющие событие OnClosing, будет работать. Посмотрите на приведенную ниже часть кода.

        protected override void OnFormClosing(FormClosingEventArgs e)
        {
            try
            {
                ConfirmClose = true;
                base.OnFormClosing(e);
                if (e.CloseReason == CloseReason.WindowsShutDown)
               {
                    //Do some action
               }
            }
          }
            catch (Exception ex)
            {

            }
        }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...