我尝试创建一个,但是一旦reportProgress被激活,Window1中的BackgroundWorker
无法访问Window2中的ProgressBar
,因为“调用线程无法访问此对象,因为另一个线程拥有它”
似乎我可以使用较低级别的线程模型,但它看起来也复杂得多。
答案 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