BackgroundWorker多线程访问表单

Mar*_*elo 6 .net c# backgroundworker visual-studio

我正在使用同时运行的5个BackgroundWorker对象用于特定目的,并且所有这些对象都必须更改相同的标签.我怎么做?

如何从多个线程修改表单呢?如果我想更改公共字符串,我该怎么做?

Rob*_*obC 17

将Control.Invoke与委托一起使用.

在你的后台工作线程中,而不是说

label4.Text = "Hello";
Run Code Online (Sandbox Code Playgroud)

label4.Invoke(new Action(() =>
{
  label4.Text = "Hello";
}
));
Run Code Online (Sandbox Code Playgroud)

{}内的所有内容都在控件的线程上执行,因此您可以避免异常.

这允许您从而BackgroundWorker不仅仅是报告进度来对用户界面进行任意更改.