Форма Windows C # убита диспетчером задач ... Есть ли способ запустить функцию выключения? - PullRequest
1 голос
/ 24 июля 2010

Я сомневаюсь, что это даже возможно.Итак, ваше приложение работает, и пользователь решает завершить процесс через диспетчер задач.Есть ли способ / действие для сохранения данных во время process.kill?Я сомневаюсь, что есть, но я должен был спросить.

Кроме того, если пользователь выключит / перезагрузит компьютер (как при обновлении Windows / ручном перезапуске), какое действие выполнит приложение?Window_Unloaded?В этом втором вопросе я хотел бы найти способ убедиться, что мое приложение не отображается как ситуация «если вы хотите перезапустить, убить это приложение» и хотите сохранить необходимые данные.

Ваши два центас благодарностью!

Ответы [ 2 ]

3 голосов
/ 24 июля 2010

Невозможно делать то, что вы хотите, если у вас нет двух процессов;один следит за состоянием другого и делает некоторые вещи по его окончании.Сторожевой процесс может быть приложением службы Windows без графического интерфейса.

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

Принудительное завершение работы немедленно убивает все процессы (без определенного / предсказуемого порядка).Таким образом, вы не можете (легко) обнаружить его.

Я предлагаю вам сохранить все необходимое как можно скорее, чтобы предотвратить потерю данных при уничтожении процесса приложения.

1 голос
/ 24 июля 2010

Если что-то останавливает ваше работающее приложение, то у вас нет возможности что-либо сделать, просто умереть.Вы модифицируете свое приложение так, чтобы все данные всегда сохранялись в каком-либо постоянном месте, поэтому, если приложение умирает, сохраненные данные остаются.Очевидно, вы должны разработать для этого.Затем, если пользователь выполняет «сохранение», вы фиксируете «реальное» хранилище данных.

Если Windows собирается перезагрузиться, она должна отправить сообщение в ваше приложение, которое вы можете обработать.Однако не уверен, что это работает для всех приложений типа GUI / console / service.

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