我试过创建一个,但是一旦reportProgress被激活,Window1中的BackgroundWorker
就无法访问Window2中的ProgressBar
,因为“调用线程不能访问这个对象,因为不同的线程拥有它”。WPF:有没有简单的方法来创建一个进度窗口?
似乎有一个较低级别的线程模型,我可以使用,但它似乎也更复杂。
我试过创建一个,但是一旦reportProgress被激活,Window1中的BackgroundWorker
就无法访问Window2中的ProgressBar
,因为“调用线程不能访问这个对象,因为不同的线程拥有它”。WPF:有没有简单的方法来创建一个进度窗口?
似乎有一个较低级别的线程模型,我可以使用,但它似乎也更复杂。
你只需要得到ProgressBar
disptacher。
您可以访问ProgressBar
有:
Window2.prograssbar.Dispatcher.Invoke(
() => /*the code for modifying the progressbar*/);
在WPF中,UI控件和属性只能从UI线程激活。为了从另一个线程更改进度条的值,可以在GUI线程的调度程序队列中添加一个命令。您可以通过将代理传递给Dispatcher.Invoke()
方法来完成此操作。请参阅文章http://msdn.microsoft.com/en-us/magazine/cc163328.aspx了解更多详情。
此页面也帮助我http://www.switchonthecode.com/tutorials/working-with-the-wpf-dispatcher – zxcvbnm 2010-02-17 13:25:53