【问题标题】:WPF: Is there a simple way to create a Progress Window?WPF:有没有一种简单的方法来创建进度窗口?
【发布时间】:2010-02-17 12:31:23
【问题描述】:

我尝试创建一个,但是一旦激活了 reportProgress,Window1 中的 BackgroundWorker 就无法访问 Window2 中的 ProgressBar,因为“调用线程无法访问该对象,因为不同的线程拥有它”。

似乎有一个较低级别的线程模型我可以使用,但它似乎也复杂得多。

【问题讨论】:

    标签: wpf multithreading progress-bar progress


    【解决方案1】:

    您只需要获取ProgressBar 调度员。

    您可以通过以下方式访问ProgressBar

    Window2.prograssbar.Dispatcher.Invoke(
        () => /*the code for modifying the progressbar*/ );
    

    【讨论】:

    【解决方案2】:

    在 WPF 中,UI 控件和属性只能从 UI 线程激活。为了从不同的线程更改进度条的值,您可以将命令添加到 GUI 线程的调度程序队列。您可以通过将委托传递给Dispatcher.Invoke() 方法来做到这一点。有关详细信息,请参阅http://msdn.microsoft.com/en-us/magazine/cc163328.aspx 上的文章。

    【讨论】:

      【解决方案3】:

      你需要查看Delegates

      【讨论】:

      • 除了委托也会在后台线程上执行,留下同样的问题。
      猜你喜欢
      • 2020-10-18
      • 1970-01-01
      • 2023-04-03
      • 2012-06-29
      • 2012-08-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多