2011-09-08 18 views
8

Ho bisogno di utilizzare la funzione di callback per eseguire alcune attività di post-elaborazione quando la funzione iniziata con Dispatcher.BeginInvoke termina. Tuttavia non sono riuscito a trovare alcun parametro in Dispatcher.BeginInvoke per accettare una richiamata. È possibile assegnare una funzione di callback a Dispatcher.BeginInvoke?come assegnare la funzione di callback a Dispatcher.BeginInvoke

risposta

10

L'oggetto DispatcherOperation restituito da BeginInvoke ha un evento Completed. Iscriviti a quella per eseguire le operazioni al completamento:

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

C'è una possibilità l'operazione sarà completata prima ti iscrivi, in modo da poter verificare la proprietà Status per il completamento dopo così:

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

E 'possibile per anche l'operazione deve essere interrotta, quindi potrebbe essere appropriato manipolare/testare per Aborted.

+3

Nota che questo non è disponibile su Windows Phone 7, 8 e Silverlight :( –

Problemi correlati