7

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

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

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

4

3 回答 3

12

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

于 2012-11-23T08:22:24.827 回答
5

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

于 2012-11-23T07:35:56.317 回答
4

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

于 2012-11-23T08:39:06.730 回答