“程序没有响应”是什么意思?

时间:2015-06-02 09:51:40

标签: windows winapi windows-process

此消息的含义是,是否存在“响应”Microsoft Windows状态查询的API?

我正在寻找技术答案。谢谢:))

2 个答案:

答案 0 :(得分:6)

这意味着程序无法为其消息队列提供服务。来自documentation

  

如果顶级窗口停止响应消息超过几秒钟,系统会认为该窗口没有响应。在这种情况下,系统隐藏窗口并将其替换为具有相同Z顺序,位置,大小和视觉属性的重影窗口。这允许用户移动它,调整其大小,甚至关闭应用程序。但是,这些是唯一可用的操作,因为应用程序实际上没有响应。在调试器模式下,系统不会生成重影窗口。

通常这意味着程序的主线程正忙,并且没有足够频繁地调用GetMessage。应该在主UI线程以外的线程上执行长时间运行的任务。

答案 1 :(得分:3)

Windows应用程序通过接收窗口消息与操作系统交互。这些消息由应用程序在其主线程中循环处理。

如果应用程序未能及时处理其消息(其中有几秒是保证金),则其消息队列将填满,Windows将此应用程序标记为"未响应",将其主窗口呈现为白色等等。

这种行为主要是由在处理窗口消息的同一线程上执行冗长操作引起的。该线程通常被称为"主UI线程"。如果您没有进行任何显式多线程,它可能是您应用程序的唯一线程。