调度程序在C# Windows窗体应用程序中未启动

7
我有一个带有进度条的C# Windows Forms应用程序。我想根据某个方法的状态动态地进展。我将该方法放在一个单独的类中,并为该方法创建了一个新线程,使用委托将该方法的状态传递给父线程。
在WPF应用程序中,我可以使用“progressbar.Dispatcher”解决相同的问题,但是在Windows Forms应用程序中,即使我使用“System.Threading”命名空间,也没有Dispatcher。
“progressbar.Dispatcher”似乎仅在WPF应用程序中可用。
3个回答

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

5

在Windows窗体应用程序中,BackgroundWorker应该完美适合您的任务。特别地,它有一个ReportProgress方法可以根据您的计算发送进度,并且有一个ProgressChanged用于跟踪来自UI线程的更改。请查看MSDN文章获取全部细节。


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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接