Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/blackberry/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
WPF:有没有一种简单的方法来创建进度窗口?_Wpf_Multithreading_Progress Bar_Progress - Fatal编程技术网

WPF:有没有一种简单的方法来创建进度窗口?

WPF:有没有一种简单的方法来创建进度窗口?,wpf,multithreading,progress-bar,progress,Wpf,Multithreading,Progress Bar,Progress,我尝试创建了一个,但是一旦reportProgress被激活,Window1中的BackgroundWorker就无法访问Window2中的ProgressBar,因为“调用线程无法访问此对象,因为其他线程拥有它” 似乎我可以使用较低级别的线程模型,但它似乎要复杂得多。您需要查看WPF中的UI控件和属性,它们只能从UI线程激活。为了从不同线程更改进度条的值,可以向GUI线程的调度程序队列添加命令。您可以通过将委托传递给Dispatcher.Invoke()方法来完成此操作。有关更多详细信息,请参

我尝试创建了一个,但是一旦reportProgress被激活,Window1中的
BackgroundWorker
就无法访问Window2中的
ProgressBar
,因为“调用线程无法访问此对象,因为其他线程拥有它”


似乎我可以使用较低级别的线程模型,但它似乎要复杂得多。

您需要查看WPF中的UI控件和属性,它们只能从UI线程激活。为了从不同线程更改进度条的值,可以向GUI线程的调度程序队列添加命令。您可以通过将委托传递给
Dispatcher.Invoke()
方法来完成此操作。有关更多详细信息,请参阅上的文章。

您只需获取
ProgressBar
Dispatcher

您可以通过以下方式访问
ProgressBar

Window2.prograssbar.Dispatcher.Invoke(
    () => /*the code for modifying the progressbar*/ );

除此之外,委托也将在后台线程上执行,使OP出现同样的问题。此页面也帮助了我