【问题标题】:Button Thread-Safe Calls to Windows Forms Controls C#对 Windows 窗体控件 C# 的按钮线程安全调用
【发布时间】:2023-03-25 04:32:01
【问题描述】:

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

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

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

【问题讨论】:

  • 我猜你没有完整阅读这个例子。您需要调用 this.Invoke(...) 以更改 button.Enabled。
  • 我不知道如何在我的情况下应用,因为在示例中他们委托了一个文本。我对 C# 上的线程没有经验。你能告诉我如何在我的情况下应用它吗?

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


【解决方案1】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-06-05
    • 2011-08-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多