首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >WaitForExit未正确超时,只是挂起

WaitForExit未正确超时,只是挂起
EN

Stack Overflow用户
提问于 2016-04-15 02:58:48
回答 1查看 794关注 0票数 1

我有一些这样的代码:

代码语言:javascript
复制
process.CloseMainWindow();
if (!process.WaitForExit(5000)) { process.Kill(); }

这个想法是让进程优雅地退出,但如果花费的时间超过5秒,我认为它需要被终止。

这似乎在大多数情况下都是有效的,但是如果进程抛出了一条windows错误消息,它就会挂起。我之前只有一个"process.Kill()“,而且它是有效的,所以我不得不假设它实际上被WaitForExit(5000)调用卡住了,即使我给了它一个超时值。

会发生这种情况的原因是什么?

编辑:我想知道是不是因为那个错误消息,CloseMainWindow()实际上挂起了。在这种情况下,在尝试CloseMainWindow()方法之前检查进程的"responding“属性实际上会返回"false”吗?如果是这样,我可以检查它,然后使用Kill,如果是这样的话。

EN

回答 1

Stack Overflow用户

发布于 2016-04-15 04:15:51

首先,我要感谢Marc不厌其烦地这么做,我从来没有想过我可以用这种方式重现这个错误。

无论如何,在更仔细地阅读了CloseMainWindow()的帮助文件后,我看到了以下内容:

代码语言:javascript
复制
Return Value
Type: System.Boolean
true if the close message was successfully sent; false if the associated 
process does not have a main window or if the main window is disabled (for 
example if a modal dialog is being shown).

就在那里,它显示了一个模式对话框(比如我看到的错误),这将导致一个问题。现在我不确定为什么它不会在超时后失败,然后在超时后被终止,但我认为在这种情况下,我可以使用这个返回值来终止进程。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/36631722

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档