У меня есть приложение WPF, которое построено на шаблоне проектирования MVVM.
Я хочу реализовать индикатор прогресса в приложении, которое следует шаблону MVVM. Что самое ...
Я хочу убить процесс, запущенный на машине, с помощью taskkill, если он все еще работает через X секунд (служба Windows была остановлена, но процессам требуется время, чтобы исчезнуть) Какой самый правильный способ выполнить вышеизложенное в C # (.net 2.0 или, возможно, 3.0)?
У меня есть служебный метод для проверки того, запущен ли еще процесс, по имени процесса (используя Process.GetProcesses ( )
).
(Поскольку мой код не порождает этот процесс, я не могу использовать WaitTillExit, чтобы узнать, когда он больше не работает)
PS: процесс выполняется на удаленной машине
На самом деле, вы можете использовать Process.WaitForExit().
Просто получите процесс для ожидания через
Process p = Process.GetProcessById(iYourID);
А затем вызовите
if(!p.WaitForExit(iYourInterval))
{
p.Kill();
}
Вы также можете получить процессы по их имени через
Process.GetProcessesByName(strYourProcessName);
Вы можете вызвать Process.WaitForExit
, передав соответствующий таймаут. Таким образом, вам не придется использовать собственную проверку, чтобы узнать, запущен ли еще процесс.
Process p = ...
bool exited = p.WaitForExit(10000); // 10 seconds timeout