如何检查进程是否没有响应?
如果其他进程没有响应,是否有可能从代码中检查?
问题是即使应用程序崩溃并且管理器列表上标记为“无响应”,Process.Responding属性仍然返回’true’。
如果流程是明确的,那么’退出’事件和函数’WaitForExit’可以执行任何操作。 所以这不是重点。
两个字的问题; 我需要知道应用程序崩溃了。 如何从代码中检查它?
感谢您的时间。
这个问题没有通用的解决方案。
无法判断特定进程是否挂起,因为术语“挂起”完全取决于正在执行的进程的上下文。
挂起过程将始终执行编码操作。 开发人员可能对其进行了严格编码,但Windows无法对正确/错误进行假设。
可能尝试的想法可能是:
-
Process.Responding调用将指示正在执行Windows消息循环的进程是否正在响应。
-
对于更一般的情况,一种可能的解决方案可能是每隔一段时间轮询进程的内存使用情况,如果在足够的时间后没有更改,则假设它已挂起。 您可以使用
Process.WorkingSet64
执行此操作。 但是,我希望这会导致一些误报 – 没有处理任何事情的稳定进程可能会出现问题。 它也会导致漏报,其中一个有内存泄漏的挂起过程似乎在做一些有用的事情,而实际上它被卡在一个循环中。 -
如果进程写入StandardError / StandardOutput流(就像许多控制台应用程序那样),那么您可以尝试侦听此类输出:
Process.BeginOutputReadLine
和Process.BeginErrorReadLine
。 如果在给定时间段内没有此类输出,您可能会推断它已挂起。
但是你不会在一般情况下找到任何有用的东西。
上述就是C#学习教程:如何检查进程是否没有响应?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/949751.html