Dispatcher不会使用C#Windows Forms Application

我有一个带有进度条的C#Windows窗体应用程序。 我想根据某些方法状态动态地进行。 我在一个单独的类中有该方法,并为该方法创建一个新线程,并使用委托将该方法的状态传递给父线程。

我可以使用progressbar.Dispatcher在WPF应用程序中解决相同的情况,但在Windows窗体应用程序中没有Dispatcher,即使我使用System.Threading命名空间。

progressbar.Dispatcher似乎只在WPF应用程序中可用。

在winforms中,您可以使用ProgressBar.Invoke或ProgressBar.BeginInvoke从另一个线程更新控件。

在Windows窗体应用程序中, BackgroundWorker应完全适合您的任务。 特别是,它具有ReportProgress方法,用于根据您的计算发送进度,而ProgressChanged用于跟踪UI线程的更改。 有关完整详细信息,请参阅MSDN文章

在WinForms中, Invoke/BeginInvoke方法直接在控件对象上,您可以从System.Windows.Forms.Control的文档中看到。 所以你有progressBar.BeginInvoke(...)例如。