как передать функцию обратного вызова в Dispatcher.BeginInvoke - PullRequest
9 голосов
/ 09 сентября 2011

Мне нужно использовать функцию обратного вызова для выполнения некоторых задач постобработки, когда функция, запущенная с Dispatcher.BeginInvoke, завершится. Однако я не смог найти какой-либо параметр в Dispatcher.BeginInvoke для принятия обратного вызова. Можно ли передать функцию обратного вызова Dispatcher.BeginInvoke?

1 Ответ

11 голосов
/ 09 сентября 2011

Объект DispatcherOperation, возвращаемый BeginInvoke, имеет событие Completed. Подписаться на выполнение операций после завершения:

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

Существует вероятность того, что операция будет завершена до подписки, поэтому вы также можете проверить свойство Status на предмет завершения после:

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

Возможно, что операция также может быть прервана, поэтому обработка / тестирование для Aborted также могут быть уместными.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...