我尝试创建一个,但是一旦激活 reportProgress,BackgroundWorker
in Window1 就无法访问ProgressBar
in Window2,因为“调用线程无法访问此对象,因为不同的线程拥有它”。
似乎有一个较低级别的线程模型我可以使用,但它似乎也复杂得多。
我尝试创建一个,但是一旦激活 reportProgress,BackgroundWorker
in Window1 就无法访问ProgressBar
in Window2,因为“调用线程无法访问此对象,因为不同的线程拥有它”。
似乎有一个较低级别的线程模型我可以使用,但它似乎也复杂得多。
在 WPF 中,UI 控件和属性只能从 UI 线程激活。为了从不同的线程更改进度条的值,您可以将命令添加到 GUI 线程的调度程序队列。您可以通过将委托传递给该Dispatcher.Invoke()
方法来做到这一点。有关详细信息,请参阅http://msdn.microsoft.com/en-us/magazine/cc163328.aspx上的文章。
你只需要得到ProgressBar
调度员。
您可以通过以下方式访问ProgressBar
:
Window2.prograssbar.Dispatcher.Invoke(
() => /*the code for modifying the progressbar*/ );
您需要查看代表