Process.Kill()问题

时间:2012-08-13 08:50:59

标签: c# .net-3.5

我有以下几行代码:

Process aProcess = Process.Start("ieexplorer", aDummyHTMLFilePath);
//I do nothing in between
aProcess.Kill();

如果 NO 其他IE窗口打开,这将顺利运行。

但如果有一个窗口打开,我会在System.InvalidOperationExceptionaProcess.Kill();说:

  

无法处理请求,因为该进程已退出。

另外,我注意到在这种情况下,aProcess.HasExited在上面代码的第1行之后就是正确的。

即使有其他IE窗口打开,我怎样才能顺利关闭IE?

2 个答案:

答案 0 :(得分:4)

当您启动Internet Explorer的新实例时,它会尝试查看Internet Explorer是否已在运行。如果确实如此,则在已运行的实例中打开URL,并立即退出新实例。这意味着当你试图杀死你开始的过程时,它已经自愿退出了。但是,您将在屏幕上看到一个新的浏览器窗口或选项卡,但它由现有的Internet Explorer进程托管。

答案 1 :(得分:0)

我没有遇到和你一样的问题

如果进程仍在运行,我发现以下情况有效

    Process p = Process.Start("notepad.exe", "");
    Thread.Sleep(5000);
    if (!p.HasExited) p.Kill();

如果窗户已经关闭,它只会抱怨。因此检查