【发布时间】:2010-02-17 12:31:23
【问题描述】:
我尝试创建一个,但是一旦激活了 reportProgress,Window1 中的 BackgroundWorker 就无法访问 Window2 中的 ProgressBar,因为“调用线程无法访问该对象,因为不同的线程拥有它”。
似乎有一个较低级别的线程模型我可以使用,但它似乎也复杂得多。
【问题讨论】:
标签: wpf multithreading progress-bar progress
我尝试创建一个,但是一旦激活了 reportProgress,Window1 中的 BackgroundWorker 就无法访问 Window2 中的 ProgressBar,因为“调用线程无法访问该对象,因为不同的线程拥有它”。
似乎有一个较低级别的线程模型我可以使用,但它似乎也复杂得多。
【问题讨论】:
标签: wpf multithreading progress-bar progress
您只需要获取ProgressBar 调度员。
您可以通过以下方式访问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 上的文章。
【讨论】:
你需要查看Delegates
【讨论】: