WPF: Is there a simple way to create a Progress Window?
I tried creating one, but the BackgroundWorker
in Window1 couldn't access the ProgressBar
in Window2 once the reportProgress was activated, because "The calling thread cannot access this object because a different thread owns 开发者_运维知识库it".
Seems there's a lower level thread model I could use, but it also seems a lot more complicated.
You just need to get the ProgressBar
disptacher.
You can access the ProgressBar
with:
Window2.prograssbar.Dispatcher.Invoke(
() => /*the code for modifying the progressbar*/ );
In WPF, UI controls and properties may only be activated from the UI thread. In order to change the progress bar's value from a different thread, you can add a command to the GUI thread's dispatcher queue. You can do this by passing a delegate to the Dispatcher.Invoke()
method. See the article at http://msdn.microsoft.com/en-us/magazine/cc163328.aspx for more details.
You need to look into Delegates
精彩评论