调度程序无法在C#Windows窗体应用程序上运行

调度程序无法在C#Windows窗体应用程序上运行,c#,multithreading,dispatcher,windows-applications,C#,Multithreading,Dispatcher,Windows Applications,我有一个带有进度条的C#Windows窗体应用程序。我想根据一些方法状态动态地进行处理。我将该方法放在一个单独的类中,并且正在为该方法创建一个新线程,通过一个委托将该方法的状态传递给父线程 在WPF应用程序中,我可以使用progressbar.Dispatcher解决相同的情况,但在Windows窗体应用程序中,即使我使用System.Threading命名空间,也没有Dispatcher progressbar.Dispatcher似乎仅在WPF应用程序中可用。在Windows窗体应用程序中B

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

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


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

在Windows窗体应用程序中
BackgroundWorker
应该非常适合您的任务。特别是,它有
ReportProgress
方法根据您的计算发送进度,并有
ProgressChanged
方法跟踪UI线程中的更改。有关winforms中的完整详细信息,请参见。您可以使用ProgressBar.Invoke或ProgressBar.BeginInvoke从另一个线程更新控件

在WinForms中,
Invoke/BeginInvoke
方法直接位于控件对象上,您可以从的文档中看到这一点。例如,您可以使用
progressBar.BeginInvoke(…)