执行UI更改和模态对话框的后台工作

时间:2011-03-14 13:42:20

标签: c# wpf modal-dialog backgroundworker dispatch

我有一个C#/ WPF应用程序,它将执行很多操作,包括UI修改(它正在加载一个宏),但我希望有一个模态窗口,其中有一些东西在等待。

加载宏工作必须在主应用程序线程中执行,但是如何打印模式窗口,因为它必须不被宏加载阻止,而是在应用程序线程中,因为它是UI事物。

目前,我在显示等待对话框时将LoadMacro放在Application.Current.Dispatcher.Invoke中的BackgroundWorker中。但这并不令人满意,因为两人互相争斗来更新用户界面。

那我该怎么办?

1 个答案:

答案 0 :(得分:4)

您无需从任何调度程序运行后台工作程序。

加载您的模态窗口,然后启动已订阅它的ProgressChanged事件的后台工作程序。然后,您可以在后台工作程序上传递ReportProgress以返回您喜欢的任何内容,以更新UserState属性中的模型窗口。

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.progresschanged.aspx