C++程序冻结和UI变为全白

C++ Program freezing and UI turn all white

本文关键字:UI 程序 冻结 C++      更新时间:2023-10-16

我正在使用C++年内置的软件C++使用每月冻结一次的生成器。我正在查找代码,但它太大而找不到它。冻结使 UI 全部变白。我试图用一些建议的错误代码(空指针,while(1)和类似的东西)来模拟这个错误,但从来没有得到相同的空白UI。当它停止时,我运行了一个 What's Hang,但我什么也没得到。有人知道我下次可以做些什么来获取更多信息,这些信息可以帮助我找到冻结的原因?

当 UI

绘制消息排队但未处理时,通常会发生空白(白色)UI。 如果您没有在 UI 中执行某些操作来触发重绘,则仅阻止消息队列处理新消息是不够的。

至于解决原始问题 - 您应该在主线程中查找运行长循环而不处理新消息的任何代码,或者使用 WaitForSingleObject()WaitForMultipleOBjects() 而不是 MsgWaitForMultipleObjects() 长时间等待可等待的对象,调用 TThread::WaitFor() 未及时终止的线程等。

如果不知道用户执行哪些步骤来导致冻结的 UI,因此您知道要开始查看哪些代码,则很难解决此类问题。