启动具有生存时间的外部流程

时间:2009-09-14 16:24:56

标签: c#

我需要启动一个外部进程,有时会锁定。我无法控制这个过程。我正在寻找一种在c#中启动外部进程的方法,如果它超过N秒就会终止它。

3 个答案:

答案 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();
    }
}