Visual C多线程(请帮忙)?

时间:2013-01-22 22:57:36

标签: multithreading visual-c++

我使用Windows表单应用程序编写了一个.NET程序。 我的申请很简单。 基本上,我的表单上有两个简单的按钮。 首次加载表单时,我设置了一个全局变量(bool run = true)。

我的第一个按钮基本上是一个非常简单的while循环。

while(run) { // do some code }

我想要做的是,让第二个按钮将布尔值设置为false(bool run = false)。

但是,一旦我点击第一个按钮,我甚至无法触摸第二个按钮!

我已经阅读了相关内容,我认为我的解决方案是使用多线程。 我已经找到了一些用于多线程的示例代码,我尝试将这些代码合并,但我不知道为什么我不能让它工作。单击#1按钮后,我无法单击按钮#2。

1 个答案:

答案 0 :(得分:0)

你的UI线程不应该有任何无限的或等待的东西 - 永远不要!您不得阻止任何UI(除了简单的计算,验证,用户确认等)。您应该创建一个执行长度任务的线程,并让该线程使用异步(或同步,如果您愿意)通信与UI线程进行通信。

在本机Windows GUI应用程序上,您可以使用PostMessage async )或SendMessage sync )。对于.NET GUI应用程序,您可以使用Control.BeginInvoke async )或Control.Invoke sync )。

read this article 了解如何完成此操作。