一尘不染

如何从另一个线程更新 GUI?

c#

哪个是Label从另一个更新 a 的最简单方法Thread

  • 我有一个Form正在运行的thread1,然后我开始另一个线程(thread2)。
  • thread2处理一些文件时,我想LabelForm当前thread2工作状态更新 a 。

我怎么能那样做?


阅读 125

收藏
2022-02-22

共1个答案

一尘不染

简单的方法是传入匿名方法Label.Invoke

// Running on the worker thread
string newText = "abc";
form.Label.Invoke((MethodInvoker)delegate {
    // Running on the UI thread
    form.Label.Text = newText;
});
// Back on the worker thread

请注意,Invoke在完成之前会阻塞执行——这是同步代码

2022-02-22