0

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

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

while(run) { // do some code }

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

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

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

4

1 回答 1

0

Your UI thread should not have any infinite or a wait-on-something - never! You must not block the UI for anything (other than simple calculations, validations, user confirmation etc). You should make a thread for performing length task, and let that thread communicate to UI thread using asynchronous (or synchronous, if you prefer) communication.

On native Windows GUI application, you can use PostMessage (async), or SendMessage (sync). For .NET GUI applications, you can use Control.BeginInvoke (async), or Control.Invoke (sync).

Please read this article on how this is done.

于 2013-01-23T15:52:19.177 回答