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

当函数以Dispatcher.BeginInvoke启动完成时,我需要使用回调函数来执行一些后处理任务。 但是我在Dispatcher.BeginInvoke中找不到任何参数来接受回调。 是否可以为Dispatcher.BeginInvoke提供回调函数?

BeginInvoke返回的DispatcherOperation对象上有一个Completed事件。 订阅即可在完成后执行操作:

 var dispatcherOp = Dispatcher.BeginInvoke( /* your method here */); dispatcherOp.Completed += (s, e) => { /* callback code here */ }; 

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

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

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