【问题标题】:Dispatcher is not coming on C# Windows Forms ApplicationDispatcher 未出现在 C# Windows 窗体应用程序上
【发布时间】:2012-11-23 06:50:46
【问题描述】:

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

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

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

【问题讨论】:

    标签: c# multithreading dispatcher windows-applications


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

      在 Windows 窗体应用程序中 BackgroundWorker 应该非常适合您的任务。特别是,它具有 ReportProgress 方法来根据您的计算发送进度,并具有 ProgressChanged 来跟踪 UI 线程的更改。详情请见MSDN article

      【讨论】:

        【解决方案3】:

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2014-10-03
          • 2021-08-27
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2016-10-07
          • 2017-07-24
          • 1970-01-01
          相关资源
          最近更新 更多