Запустить код в приложении WinForms и закрыть компьютер? - PullRequest
0 голосов
/ 29 марта 2012

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

В основном у меня есть несколько файлов журналов, которые мне нужно приложение для загрузки на FTP-сервер при завершении работы.

Как я могу это сделать?

Ответы [ 3 ]

2 голосов
/ 29 марта 2012

Вы можете определить, что приложение закрывается, перехватив событие FormClosing .

Вы можете обнаружить выключение, выход из системы, приостановку и т. Д. С помощью SystemEvents .Я рекомендую не использовать системные события, поскольку у вас может не хватить времени для выполнения загрузки на удаленный сервер (я думаю, по умолчанию это 3 секунды).

1 голос
/ 29 марта 2012

Подцепите событие FormClosing вашей формы.Это срабатывает каждый раз, когда форма закрывается, будь то в ответ на закрытие пользователем, вызов программы, закрытие Windows и т. Д.

Если вам нужно знать, с каким выходом вы имеете дело FormClosingEventArgs имеет свойство CloseReason (типа CloseReason ), которое сообщит вам, почему окно закрывается;он включает в себя такие значения, как UserClosing и WindowsShutDown.

Однако, возможно, вы не сможете загрузить на FTP-сервер при завершении работы Windows.В Windows Vista и 7 приложения закрываются только на 2 секунды, прежде чем Windows оставляет за собой право принудительно прекратить их.Возможно, лучше сохранить локальный журнал и загрузить его при следующем запуске приложения.

0 голосов
/ 29 марта 2012

Я думаю, вам следует сосредоточиться на загрузке при завершении работы вашего приложения, а не при выключении компьютера, потому что когда компьютер выключается, у него не будет достаточно ресурсов и времени для выполнения вашей работы (загрузка и прочее).Используйте событие Form_Closing вашего приложения, чтобы выполнять свою работу, когда вызывается закрытие приложения, или вы можете использовать событие Form_Closed для запуска, когда ваше приложение вот-вот закроется.

Событие закрытия ЗакрытоСобытие

...