WPF:有没有一种简单的方法来创建进度窗口?
我尝试创建了一个,但是一旦reportProgress被激活,Window1中的WPF:有没有一种简单的方法来创建进度窗口?,wpf,multithreading,progress-bar,progress,Wpf,Multithreading,Progress Bar,Progress,我尝试创建了一个,但是一旦reportProgress被激活,Window1中的BackgroundWorker就无法访问Window2中的ProgressBar,因为“调用线程无法访问此对象,因为其他线程拥有它” 似乎我可以使用较低级别的线程模型,但它似乎要复杂得多。您需要查看WPF中的UI控件和属性,它们只能从UI线程激活。为了从不同线程更改进度条的值,可以向GUI线程的调度程序队列添加命令。您可以通过将委托传递给Dispatcher.Invoke()方法来完成此操作。有关更多详细信息,请参
BackgroundWorker
就无法访问Window2中的ProgressBar
,因为“调用线程无法访问此对象,因为其他线程拥有它”
似乎我可以使用较低级别的线程模型,但它似乎要复杂得多。您需要查看WPF中的UI控件和属性,它们只能从UI线程激活。为了从不同线程更改进度条的值,可以向GUI线程的调度程序队列添加命令。您可以通过将委托传递给
Dispatcher.Invoke()
方法来完成此操作。有关更多详细信息,请参阅上的文章。您只需获取ProgressBar
Dispatcher
您可以通过以下方式访问ProgressBar
:
Window2.prograssbar.Dispatcher.Invoke(
() => /*the code for modifying the progressbar*/ );
除此之外,委托也将在后台线程上执行,使OP出现同样的问题。此页面也帮助了我