Событие Kill Process - PullRequest
       0

Событие Kill Process

1 голос
/ 22 февраля 2012

Представьте себе запуск процесса или запуск приложения, однако в диспетчере задач происходит уничтожение этого процесса. С событием связано?

Этот код, отмена пользователя, закройте окно приложения

private void Form1_Aplicacao_FormClosing(object sender, FormClosingEventArgs e)
{
   if (e.CloseReason == CloseReason.UserClosing)
      e.Cancel = false;
}

Но если я использовал метод process.Kill (), событие FormClosing не сработало. Мой вопрос: есть событие, чтобы убить этот собственный процесс?

Ответы [ 3 ]

3 голосов
/ 22 февраля 2012

Событие не возникает, когда процесс убит.Скорее всего, когда процесс завершается, он просто удаляется из списка выполняемых задач планировщика, его память освобождается, а затем ОС собирает оставшиеся части.Я бы определенно не рассчитывал даже на работу деструкторов или сборщика мусора, поэтому любые ресурсы, которые не могут быть очищены ОС, будут утечки.вверх, размолоть его и выбросить кусочки в океан.С технической точки зрения, переход в код убитого процесса не производится, поэтому в этом коде не может быть никаких событий.Помните, что события, как и многие другие конструкции управления потоком (циклы, условные выражения и т. Д.), А также сама многозадачность, - просто причудливые переходы.По общему признанию, полезен причудливый gotos, но все же просто переходит к различным частям доступного кода.

1 голос
/ 22 февраля 2012

Краткий ответ: нет, ваше приложение не может знать (например, о событии, которое было вызвано), что его процесс размещения был жестоко убит.

0 голосов
/ 10 мая 2017

Это не совсем верно. Вы можете использовать технику связи процесса, такую ​​как ТРУБЫ.

Вы можете отправить бросать ТРУБЫ и ждать ответа. Вы можете создать правило, согласно которому если ответ не был получен в X раз, процесс был остановлен.

Но это только один из вариантов взаимодействия с процессом, дополнительную информацию вы можете получить по следующей ссылке: https://msdn.microsoft.com/en-us/library/windows/desktop/aa365574(v=vs.85).aspx

Также посмотрите на следующую опцию: C # process.start, как узнать, завершился ли процесс?

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