2011-09-08 41 views
0

當委託完成處理時,我正在訂閱DispatcherOperation的Completed事件。任何人都可以告訴我如何獲得委託在Completed事件處理程序中返回的值。我認爲只有通過接受Completed事件處理程序中的返回值才能阻止主線程。如何在回調中獲取DispatcherOperation的返回值

DispatcherOperation dispOp = this.Dispatcher.BeginInvoke(balUpdater, 
    GlobalParams._sessionObject.UserInfo.CardData); 
dispOp.Completed += new EventHandler(dispOp_Completed); 

void dispOp_Completed(object sender, EventArgs e) 
{ 
    // accept return value of balUpdater here. 
} 

回答

0

sender參數很可能是DispatcherOperation,但如果沒有,你可以捕捉到DispatcherOperation在委託:

DispatcherOperation dispOp = this.Dispatcher.BeginInvoke(balUpdater, 
    GlobalParams._sessionObject.UserInfo.CardData); 
dispOp.Completed += (sender, args) => HandleCompletion(dispOp); 

... 


private void HandleCompletion(DispatcherOperation operation) 
{ 
    object result = operation.Result; 
    // Use the result here 
}