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(...)
例如。