3
비동기 이벤트가 완료 될 때까지 어떻게 차단할 수 있습니까?이벤트가 완료 될 때까지 블로킹
private object DoAsynchronousCallSynchronously()
{
int completed = 0;
AsynchronousObject obj = new AsynchronousObject();
obj.OnCompletedCallback += delegate { Interlocked.Increment(ref completed); };
obj.StartWork();
// Busy loop
while (completed == 0)
Thread.Sleep(50);
// StartWork() has completed at this point.
return obj.Result;
}
폴링하지 않고 할 수있는 방법이 있나요 : 여기
는 이벤트 핸들러와 폴링에 플래그를 플래그를 설정하여 호출되는 이벤트까지 차단하는 방법은 무엇입니까?
정답입니다. +1 – spender
API/객체가 동기식 호출을 노출하지 않는 한 (실제로 지금은 작동하지 않습니다). – ctacke
가장 간단한 용어로는 정확할 수도 있지만 비동기 작업 X 횟수만큼을 수행하고 모든 X 작업이 완료 될 때까지 호출자를 차단하려면 어떻게해야할까요? 그것이 OP가 묻는 것을 시도한다면 나는 아마도 그 질문을 바꿔 말할 것입니다.하지만 제가 그 질문을 읽을 때 그것은 저에게 뛰어 오는 첫 번째 것입니다. – Joseph