我有一些这样的代码:
process.CloseMainWindow();
if (!process.WaitForExit(5000)) { process.Kill(); }
这个想法是让进程优雅地退出,但如果它需要超过 5 秒,我认为它需要被杀死。
这似乎在大多数情况下都有效,但如果进程抛出了 Windows 错误消息,它就会挂起。我以前只有“process.Kill()”并且有效,所以我必须假设它实际上卡在了 WaitForExit(5000) 调用上,即使我给它一个超时值。
有什么理由会发生这种情况?
编辑:我想知道是否可能是由于该错误消息而实际挂起的 CloseMainWindow() 。在这种情况下,在尝试 CloseMainWindow() 方法之前检查进程的“响应”属性实际上会返回“false”吗?如果是这样,我可以检查一下,然后在这种情况下使用 Kill 。