程序没有响应,直到功能完成

Program unresponsive until function is done

本文关键字:功能 响应 程序      更新时间:2023-10-16

Visual Studio,C++,表单应用程序

(我是Visual C++的新手)

我有一个应用程序,它有一个按钮,它的功能非常复杂,大约需要一分钟才能完成。

此外:只要函数运行,程序就会变得没有响应。当这个->刷新();被调用,但当我单击窗口中的某个位置时,它甚至不再更新。该函数将继续运行,直到完成其工作,然后一切恢复正常。

我希望能够点击"停止"按钮。

我该怎么做?

答案是多线程。。。如果您的应用程序只有一个线程,并且正忙于执行计算,那么它将无法执行任何其他操作,如更新UI或处理事件("停止"按钮)

这是因为windows程序的主线程运行消息泵(它可以执行诸如绘制屏幕之类的操作),只要函数运行,就会阻止这种情况的发生。您需要做的是启动一个执行长期运行任务的线程,当任务完成时,您可以返回到主线程以更新UI。我已经好几年没有做windows编程了,但据我回忆,这是一种非常常见的模式。