按钮线程安全调用Windows窗体控件C#

时间:2015-05-07 10:28:59

标签: c# multithreading winforms button windows-forms-designer

我已阅读this topic有关如何对Windows窗体控件进行线程安全调用的问题。但我并不真正了解如何将其应用于按钮。就我而言,我有:

button.Enabled = false;
new Thread(() =>
{                   
    doSomeWork();
    button.Enabled = true;           
}).Start();

我想在线程结束时启用按钮。

1 个答案:

答案 0 :(得分:3)

您需要使用Invoke方法才能在UI线程中执行代码:

button.Enabled = false;
new Thread(() =>
{                   
   doSomeWork();
   this.Invoke((MethodInvoker) delegate {
         button.Enabled = true;
   });
}).Start();