Этот метод посылает процессу сообщение, предписывающее ему остановиться. Он возвращает логическое значениеtrue,если сообщение получено, и логическое значениеfalse,если приложение не имеет графического пользовательского интерфейса или главного окна. Следует, однако, иметь в виду, что методCloseMainWindow() служит только для запроса остановки процесса. Если приложение проигнорирует такой запрос, то оно не будет прервано как процесс.
Для безусловного прерывания процесса следует вызвать методKill (), как показано ниже.
public void Kill()
Но методомKill() следует пользоваться аккуратно, так как он приводит к неконтролируемому прерыванию процесса. Любые несохраненные данные, связанные с прерываемым процессом, будут, скорее всего, потеряны.
Для того чтобы организовать ожидание завершения процесса, можно воспользоваться методомWaitForExit (). Ниже приведены две его формы.
public void WaitForExit()
public bool WaitForExit(int
В первой форме ожидание продолжается до тех пор, пока процесс не завершится, а во второй форме — только в течение указанного количества
В приведенном ниже примере программы демонстрируется создание, ожидание и закрытие процесса. В этой программе сначала запускается стандартная сервисная программа Windows: текстовый редактор WordPad.exe, а затем организуется ожидание завершения программы WordPad как процесса.
// Продемонстрировать запуск нового процесса.
using System;
using System.Diagnostics;
class StartProcess { static void Main() {
Process newProc =r Process.Start("wordpad.exe");
Console.WriteLine("Новый процесс запущен.");
newProc.WaitForExit();
newProc.Close(); // освободить выделенные ресурсы Console.WriteLine("Новый процесс завершен.");
}
}
При выполнении этой программы запускается стандартное приложение WordPad, и на экране появляется сообщение "Новый процесс запущен. ". Затем программа ожидает закрытия WordPad. По окончании работы WordPad на экране появляется заключительное сообщение "Новый процесс завершен.11.
ГЛАВА 24 Многопоточное программирование. Часть вторая: библиотека TPL