我使用Windows表单应用程序编写了一个.NET程序。 我的申请很简单。 基本上,我的表单上有两个简单的按钮。 首次加载表单时,我设置了一个全局变量(bool run = true)。
我的第一个按钮基本上是一个非常简单的while循环。
while(run)
{
// do some code
}
我想要做的是,让第二个按钮将布尔值设置为false(bool run = false)。
但是,一旦我点击第一个按钮,我甚至无法触摸第二个按钮!
我已经阅读了相关内容,我认为我的解决方案是使用多线程。 我已经找到了一些用于多线程的示例代码,我尝试将这些代码合并,但我不知道为什么我不能让它工作。单击#1按钮后,我无法单击按钮#2。
答案 0 :(得分:0)
你的UI线程不应该有任何无限的或等待的东西 - 永远不要!您不得阻止任何UI(除了简单的计算,验证,用户确认等)。您应该创建一个执行长度任务的线程,并让该线程使用异步(或同步,如果您愿意)通信与UI线程进行通信。
在本机Windows GUI应用程序上,您可以使用PostMessage
( async )或SendMessage
( sync )。对于.NET GUI应用程序,您可以使用Control.BeginInvoke
( async )或Control.Invoke
( sync )。
请read this article 了解如何完成此操作。