当使用 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
也可能是合适的。
关于c# - 如何为 Dispatcher.BeginInvoke 提供回调函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7354367/