2012-12-17 191 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