当使用以Dispatcher.BeginInvoke开始的函数完成时,我需要使用回调函数来执行一些后处理任务。然而,我找不到在Dispatcher.BeginInvoke中接受回调函数的任何参数。是否可能给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
也可能是合适的。