【问题标题】:How to create a Non-Freezing Infinite Loop?如何创建非冻结无限循环?
【发布时间】:2016-02-03 20:47:19
【问题描述】:

我的问题如下:

如何在 C++ 中创建一个不会冻结窗口、保持响应并允许程序随时关闭的无限循环?

例子:

#include <Windows.h>
int main()
{
    while(1)
    {
        FlashPrettyGraphics();
        Sleep(10);
    }
}

这个程序,就像现在一样,将工作大约。十几秒钟,之后它将变得无响应并崩溃。执行过程中窗口将无法移动。

我该如何解决这个问题?

【问题讨论】:

  • 搜索线程
  • 搜索事件处理。您的窗口冻结和可执行程序崩溃,因为您不处理您的窗口接收到的事件。循环是否无限无关紧要,这是处理事件的唯一要求。

标签: c++ windows time infinite-loop


【解决方案1】:

这通常通过多线程来完成。您创建一个与用户交互的线程,然后创建另一个具有执行处理的无限循环的线程。

【讨论】:

  • 正确 OP 如何错过事件处理,这就是他的窗口冻结和可执行崩溃的原因(因为事件队列溢出)。他的要求可以通过一个或多个线程轻松实现,唯一的要求是快速处理事件。现在OP 应该添加适当的事件处理,没有它,新线程将不会改变任何东西
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-10-16
  • 1970-01-01
  • 2021-02-20
  • 1970-01-01
  • 1970-01-01
  • 2021-08-11
相关资源
最近更新 更多