2012-12-17 6 views
0

콜백 메서드를 호출 할 때까지 기다렸다가 그 후에 작업을 계속하고 싶습니다. 나는 다음과 같이 시도했다 :비동기 메서드 호출을 기다리는 중

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

그러나 callback은 DO 작업을 수행 한 후에 시작되지 않았다.

+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')가 당신의 필요에 맞을 수 있습니까? 나는 그것의 "슬림"버전이 있다고 생각합니다. MSDN 문서를 보면 쉽게 사용할 수 있습니다. – usr

관련 문제