WPF:有一种简单的方法来创建进度窗口吗?

时间:2010-02-17 12:31:23

标签: wpf multithreading progress-bar progress

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

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

3 个答案:

答案 0 :(得分:1)

在WPF中,只能从UI线程激活UI控件和属性。要从其他线程更改进度条的值,可以向GUI线程的调度程序队列添加命令。您可以通过将委托传递给Dispatcher.Invoke()方法来完成此操作。有关详情,请参阅http://msdn.microsoft.com/en-us/magazine/cc163328.aspx上的文章。

答案 1 :(得分:1)

您只需要获得ProgressBar调度员。

您可以访问ProgressBar

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

答案 2 :(得分:0)

您需要查看Delegates