调度程序完成事件未按预期工作

时间:2015-10-16 02:04:22

标签: c# wpf dispatcher begininvoke

//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操作。然而,当我运行它时,看起来整个应用程序在调度程序调用函数时冻结。结果是控制我试图显示从未实际显示过。

为什么会这样?

1 个答案:

答案 0 :(得分:0)

请使用TaskScheduler替换您的逻辑。来自msdn的链接为它的工作原理提供了一个很好的例子。

https://msdn.microsoft.com/en-us/library/dd997394(v=vs.110).aspx

快照

{{1}}