如何给Dispatcher.BeginInvoke提供回调函数

9

当使用以Dispatcher.BeginInvoke开始的函数完成时,我需要使用回调函数来执行一些后处理任务。然而,我找不到在Dispatcher.BeginInvoke中接受回调函数的任何参数。是否可能给Dispatcher.BeginInvoke提供一个回调函数?

1个回答

13
BeginInvoke 返回的 DispatcherOperation 对象具有一个 Completed 事件。订阅该事件以在完成时执行操作。
var dispatcherOp = Dispatcher.BeginInvoke( /* your method here */);
dispatcherOp.Completed += (s, e) => { /* callback code here */ };

操作有可能在您订阅之前完成,因此您也可以在此之后测试 Status 属性是否完成:

if (dispatcherOp.Status == DispatcherOperationStatus.Completed) { ... }

操作也有可能被中止,因此处理/测试 Aborted 也可能是合适的。


3
请注意,这在 Windows Phone 7、8 和 Silverlight 上不可用 :( - Henry C

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接