2012-03-29 2 views
0

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

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

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

+0

@BryanCrosby 'AppDomain.CurrentDomain.ProcessExit + = new EventHandler (OnExit);' и используя событие FormClosing формы. –

ответ

2

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

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

+0

Хорошо, что знаю, это действительно сработало! –

0

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

Closing event Closed Event

+0

Мне нужно сделать загрузку при выключении, потому что пользователь не взаимодействует с моим приложением. Он скрыт и работает в фоновом режиме. –

+2

Вы связаны с событиями WPF. Вопрос о WinForms. –

+0

Уходите дословно. Важным является логика, algo –

1

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

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

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

+0

Да, я уже пробовал использовать событие FormClosing, хотя я никогда не думал просто загружать файл, когда компьютер начинает резервное копирование. Я попробую добавить небольшой тег в конец файла, чтобы программа узнала, что файл по-прежнему нужно загружать. Благодаря! –

+0

Упс, извините, что принял ваш ответ, затем не принимайте, но кто-то узнал, как заставить его работать на shutdown/logff. –

+0

@ ryansworld10, интересно. Итак, ваша загрузка из SystemEvents работает лучше, чем с помощью FormClosing? Я не ожидал этого (хотя это, конечно, возможно), поэтому мне любопытно узнать больше. Я бы подумал, что 2-секундное обрезание будет применяться в любом случае. –