//Code to show a control goes here
var DispatcherOperation = this.ParentWindow.Dispatcher.BeginInvoke((Action)(() =>
{
//Do stuff
}));
DispatcherOperation.Completed += (s, e) =>
{
if (DispatcherOperation.Status == System.Windows.Threading.DispatcherOperationStatus.Completed)
{
//Code to hide control shown above goes here
}
};
我想要的是在需要完成的工作正在工作时显示某个控件,然后在完成后隐藏该控件(将显示新内容)。我猜它基本上就像一个加载算法。
我对Dispatcher方法BeginInvoke
的理解是它用于异步执行UI操作。然而,当我运行它时,看起来整个应用程序在调度程序调用函数时冻结。结果是控制我试图显示从未实际显示过。
为什么会这样?
答案 0 :(得分:0)
请使用TaskScheduler替换您的逻辑。来自msdn的链接为它的工作原理提供了一个很好的例子。
https://msdn.microsoft.com/en-us/library/dd997394(v=vs.110).aspx
快照
{{1}}