2014-04-17 156 views
0

我有一个使用单独线程的WPF应用程序和一个登录窗口。在我的主线程中,应用程序正在加载(PRISM模块等),并将进度报告给我的登录窗口。一次调用过程调度程序队列/后台线程

当Bootstrapper完成后,Login View将关闭,并显示Application MainWindow。

确保每个后台工作或Dispatcher活动完成我想在显示MainWindow之前调用方法。

有没有任何方法来处理所有待处理的后台任务/ Dispatcher队列项目?

+0

你可以使用ManualResetEvent吗? –

+1

您可能会将一个处理程序附加到[Dispatcher.Hooks](http)的[DispatcherInactive](http://msdn.microsoft.com/zh-cn/library/system.windows.threading.dispatcherhooks.dispatcherinactive.aspx)事件://msdn.microsoft.com/en-us/library/system.windows.threading.dispatcher.hooks.aspx)。 – Clemens

回答

1

您可以检查调度程序是否空闲以确保不存在任何操作。

要做到这一点,你可以使用Dispatcher.CurrentDispatcher.Hooks

在这之后,你可以添加一个事件处理程序挂接到调度hooks.DispatcherInactive + = DispatcherInactiveHandler

这应该告诉你,如果调度程序目前是空的。