程序无响应,直到功能完成

时间:2011-05-30 19:02:31

标签: c++ forms

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

(我是Visual C ++的新手)

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

另外:只要该功能运行,程序就会变得无法响应。当this-> Refresh();时,窗口会更新。被称为,但当我点击某个窗口,然后它甚至不再更新。该功能继续运行,直到完成其工作,然后一切恢复正常。

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

我该怎么做?

2 个答案:

答案 0 :(得分:2)

答案是多线程...如果你的应用程序有一个线程并且它正在忙于执行计算,那么它将无法执行任何其他操作,例如更新UI或处理事件(“停止”按钮)< / p>

答案 1 :(得分:2)

这是因为Windows程序的主线程运行消息泵(它会像绘制屏幕一样),只要你的函数运行,你就会阻止它发生。您需要做的是启动一个执行长期运行任务的线程,当任务完成后,您可以回发到主线程以更新UI。我多年没有完成Windows编程,但这是我记忆中非常常见的模式。