我需要启动一个外部进程,有时会锁定。我无法控制这个过程。我正在寻找一种在c#中启动外部进程的方法,如果它超过N秒就会终止它。
答案 0 :(得分:3)
ProcessStartInfo psi = new ProcessStartInfo();
// configure psi here - FileName, UseShellExecute etc.
Process p = Process.Start(psi);
if (!p.WaitForExit(N * 1000)) // time in millisecs
p.Kill(); // terminate with extreme prejudice
答案 1 :(得分:3)
处理此问题的最佳方法是使用Process.Start启动您的流程,并设置计时器以进行观察。
如果该过程仍在N个部分之后运行,请拨打Process.CloseMainWindow,然后拨打Process.Close。 Process.Close的文档实际上显示在10秒后关闭一个进程。
但有一件事 - 如果这个过程真的“被锁定”,那么Close可能实际上并没有关闭这个过程。在这种情况下,您可能需要等待,然后致电Process.Kill.这是一个很难杀死的过程,所以我建议将其作为最后的手段。
答案 2 :(得分:2)
{
Process x = new Process();
x.StartInfo.FileName = "notepad.exe";
x.Start();
//wait 10 sec, then kill process
x.WaitForExit(10000);
if (!x.HasExited) {
x.Kill();
}
}