我有一个C#/ WPF应用程序,它将执行很多操作,包括UI修改(它正在加载一个宏),但我希望有一个模态窗口,其中有一些东西在等待。
加载宏工作必须在主应用程序线程中执行,但是如何打印模式窗口,因为它必须不被宏加载阻止,而是在应用程序线程中,因为它是UI事物。
目前,我在显示等待对话框时将LoadMacro放在Application.Current.Dispatcher.Invoke中的BackgroundWorker中。但这并不令人满意,因为两人互相争斗来更新用户界面。
那我该怎么办?
答案 0 :(得分:4)
您无需从任何调度程序运行后台工作程序。
加载您的模态窗口,然后启动已订阅它的ProgressChanged事件的后台工作程序。然后,您可以在后台工作程序上传递ReportProgress以返回您喜欢的任何内容,以更新UserState属性中的模型窗口。
http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.progresschanged.aspx