如何给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
处理/测试也可能是合适的。