2012-12-17 230 views
0

我想等到調用回調方法結束後繼續我的工作。我試過類似的東西:等待異步方法回調

ThreadPool.QueueUserWorkItem(_ => 
{ 
    DoWOrk(callbackmethod, inputstring); 
    ctx.Post(state => { }.null); 

但回調並沒有觸發後,嘔吐otwork。

+1

聽起來像您的DoWork方法正在超出範圍。 –

回答

1
var tcs = new TaskCompletionSource<object>(); 
DoWork(() => { //wrap callback 
    callbackmethod(); //call original callback 
    tcs.SetResult(null); //signal task 
}, inputstring); 

var task = tcs.Task; //await this task or use ContinueWith 
+0

我使用sikverkight 4,所以TaskCompletionSource r不支持任何其他選項 – AMH

+0

銀騎士?請告訴我更多 –

+0

可能發生一個事件('ManualResetEvent')將適合您的需求嗎?我認爲它有一個「Slim」版本。看看MSDN文檔,它很容易使用。 – usr