2010-02-17 104 views
1

我试过创建一个,但是一旦reportProgress被激活,Window1中的BackgroundWorker就无法访问Window2中的ProgressBar,因为“调用线程不能访问这个对象,因为不同的线程拥有它”。WPF:有没有简单的方法来创建一个进度窗口?

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

回答

1

你只需要得到ProgressBar disptacher。

您可以访问ProgressBar有:

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

此页面也帮助我http://www.switchonthecode.com/tutorials/working-with-the-wpf-dispatcher – zxcvbnm 2010-02-17 13:25:53

0

你需要寻找到Delegates

+0

除代表也将执行在后台线程,使OP同样的问题。 – slugster 2010-02-17 13:01:43

1

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

相关问题