我有以下几行代码:
Process aProcess = Process.Start("ieexplorer", aDummyHTMLFilePath);
//I do nothing in between
aProcess.Kill();
如果 NO 其他IE窗口打开,这将顺利运行。
但如果有一个窗口打开,我会在System.InvalidOperationException
上aProcess.Kill();
说:
无法处理请求,因为该进程已退出。
另外,我注意到在这种情况下,aProcess.HasExited
在上面代码的第1行之后就是正确的。
即使有其他IE窗口打开,我怎样才能顺利关闭IE?
答案 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();
如果窗户已经关闭,它只会抱怨。因此检查