I need to use callback function to do some post procesing tasks when the function started with the Dispatcher.BeginInvoke finishes. However i could not find any parameter in Dispatcher.BeginInvoke to accept a callback. Is it possible to give a callback function to Dispatcher.BeginInvoke?
Asked
Active
Viewed 6,913 times
1 Answers
13
The DispatcherOperation
object returned by BeginInvoke
has a Completed
event on it. Subscribe to that to perform operations upon completion:
var dispatcherOp = Dispatcher.BeginInvoke( /* your method here */);
dispatcherOp.Completed += (s, e) => { /* callback code here */ };
There's a chance the operation will complete before you subscribe, so you can test the Status
property for completion after as well:
if (dispatcherOp.Status == DispatcherOperationStatus.Completed) { ... }
It's possible for the operation to be aborted as well, so handling/testing for Aborted
may also be appropriate.

dlev
- 48,024
- 5
- 125
- 132
-
3Note that this is not available on Windows Phone 7, 8 and Silverlight :( – Henry C Dec 05 '12 at 08:37