2011-09-08 23 views
8

當Dispatcher.BeginInvoke函數啓動完成時,我需要使用回調函數來執行一些後期處理任務。但是,我無法在Dispatcher.BeginInvoke中找到任何參數來接受回調。是否可以給Dispatcher.BeginInvoke一個回調函數?如何將回調函數提供給Dispatcher.BeginInvoke

回答

10

BeginInvoke返回的DispatcherOperation對象上有一個Completed事件。訂閱該完成後執行操作:

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

有一個機會,你訂閱操作前將完成,所以你可以後以及測試Status物業完成日期:

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

這是可能的該操作也將被中止,所以處理/測試Aborted也可能是適當的。

+3

請注意,這不適用於Windows Phone 7,8和Silverlight :( –

相關問題