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

从另一个线程更新标签的最简单方法是什么

  • 我有一个表单thread1上运行,从中我开始了另一个线程(thread2

  • thread2正在处理一些文件时,我想用thread2的当前工作状态更新表单上的标签

我怎么能这么做

最简单的方法是将匿名方法传递到标签中。调用

//在工作线程上运行
字符串newText=“abc”;
form.Label.Invoke((MethodInvoker)委托{
//在UI线程上运行
form.Label.Text=newText;
});
//回到工作线程上

请注意,Invoke会阻止执行,直到它完成为止——这是同步代码。这个问题并没有问异步代码,但是当您想了解异步代码时,在堆栈溢出中有很多关于编写异步代码的内容

发表评论