gpt4 book ai didi

c++ - 繁忙的应用程序导致 Windows 7 上出现错误的 "Not responding"状态 - WM_UPDATE

转载 作者:可可西里 更新时间:2023-11-01 17:14:05 24 4
gpt4 key购买 nike

在长期操作过程中,我们的 C++ Win32 应用程序会显示一个带有进程条的模态状态对话框,每隔几秒左右不定期更新一次。从 Windows 7 开始,我们意识到 Windows 很快就会显示一条消息“似乎挂起...”和/或将“无响应”附加到我们的窗口标题栏。

我们发现进程对话框必须处理消息以避免这种情况。更具体地说,Windows 7 似乎不断发送 WM_UPDATE 消息来检查我们的程序是否存在。我们以前在此对话框中禁用了所有不需要的消息处理,因为配置文件运行显示它们是一个主要的减速。

但是,尽管我们认为已经解决了该问题,但用户再次报告此类问题:Windows 显示“似乎挂起...”和/或将“无响应”附加到我们的窗口标题栏,尽管我们每隔一段时间就会处理所有事件秒。

问题:

  • 是否有关于 Windows 7(或 Windows vista)中这种行为变化的文档?我们还没有找到。我们还发现了消息传递行为的许多其他变化。

  • 有没有办法从 Windows 中禁用所有此类“存活”检查?我们的应用程序运行良好,流程可能需要很长时间。

编辑:更具体地说 - 我们每隔几秒钟只做一次调用消息泵 PeekMessage/TranslateMessage/调度消息

由于这是一个相当古老的遗留程序,因此在不久的将来不可能使用单独的工作线程。我们当然会为新代码这样做。另请注意,我的主要观点是这种行为在 Windows vista/Windows 7 中肯定发生了变化。我还没有找到任何相关文档。

最佳答案

嗯,您的问题的直接答案是您可以调用 DisableProcessWindowsGhosting() .

然而,解决问题的根源比抑制症状要好得多。你的窗口被幻影了,因为你没有抽取消息队列。您没有这样做是因为您的应用程序正忙于工作,这是令人钦佩的理由。接受工作并保持队列繁忙的方法是在单独的线程中完成工作。

关于c++ - 繁忙的应用程序导致 Windows 7 上出现错误的 "Not responding"状态 - WM_UPDATE,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6997310/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com