有关Dispatcher.BeginInvoke
的问题如果我有如下方法:
private void DoSomeWork()
{
MyCanvas.Dispatcher.BeginInvoke(DispatcherPriority.Background, new DispatcherOperationCallback(delegate
{
//Do something
return null;
}), null);
}
我多次调用该方法,然后根据docs按顺序执行多个调用:如果在同一个DispatcherPriority上进行多个BeginInvoke调用,它们将按调用的顺序执行已经完成了。 Dispatcher.BeginInvoke Method MSDN
如何清除这个以阻止另一个呼叫或将队列重置为一个呼叫?
答案 0 :(得分:1)
如何清除这个以阻止另一个呼叫或将队列重置为一个呼叫?
你没有。您无法控制调度程序队列。您可以做的是保持“待处理请求”的数量(当然,确保以原子方式更新它)并且只有在这是队列中的最后一次调用时才执行(即,当递减计数时给出0)。
另一种选择是在最后一次通话时保留某种计时器,并在一段时间内忽略进一步的通话。
如果你能详细说明你想要达到的目标,我们可以提供更具体的帮助。
答案 1 :(得分:1)
您提供的MSDN链接为您提供了更多挖掘的答案。
此操作返回可用于取消的DispatcherOperation对象。但是,这是基于每个呼叫,因为您无法完整地控制队列。