我目前正在确定生产环境如何在 Windows 关闭期间处理挂起/无响应的应用程序。
为了测试这一点,最好有一个除了挂起/不响应之外不执行任何操作的虚拟应用程序。
我的第一个意图是打开
cmd
并启动一个ping -t localhost
,但是这个意图毫无问题地被完成了。打开
notepad
并输入某些内容而不保存也无济于事,因为 Windows 很容易检测到它实际上是在等待我的响应。编写一个仅由 组成的小型 Java 程序
while(true) { /* Nonsense */ }
只是一个部分解决方案,因为它会堵塞系统,从而导致其他应用程序都无法及时响应。
答案1
我还没有找到微软官方文档描述该状态的含义。通常,它与线程应用程序有关,其中一个线程阻止了与程序本身的交互。
与此相关的问题有:
重新创建它的一个简单示例(正如问题之一所详述的那样,对于控制台应用程序来说,这可能非常困难)是创建一个带有按钮的 Windows 窗体应用程序,单击按钮时将启动一个非常耗时的操作(简单while(true)
或System.Threading.Thread.Sleep(999999)
可以做到)。此时,GUI 将无法再响应,并且该过程将停止处理消息(据我所知)。
如果您检查任务管理器,它应该显示为“无响应”。但它仍然与其他标记为“无响应”的程序不同,因为至少在我非常有限的测试中,从来没有弹出窗口告诉您该进程停止响应。