2010-06-15 5 views
2

MSDN 설명서가 실제로 이것을 다루지 않기 때문에 비동기 호출을 여러 개 만들고 싶을 때 어떤 위임자 인스턴스에서 BeginInvoke의 사용을 명확히 해줄 수 있는지 궁금합니다.대리인의 단일 인스턴스를 사용하여 여러 비동기 요청을 시작할 수 있습니까?

다음과 같은 일이 내가하고 싶은 것입니다 :

MyDelegate d = new MyDelegate(this.TargetMethod); 
List<IAsyncResult> results = new List<IAsyncResult>(); 

//Start multiple asynchronous calls 
for (int i = 0; i < 4; i++) 
{ 
    results.Add(d.BeginInvoke(someParams, null, null)); 
} 

//Wait for all my calls to finish 
WaitHandle.WaitAll(results.Select(r => r.AsyncWaitHandle).ToArray()); 

//Process the Results 

내가 대리자의 인스턴스와 함께이 작업을 수행하거나 내가 각각의 호출에 대해 대리자의 인스턴스를 필요로 할 수있다 질문?

이 매개 변수로 사용된다고 가정하면 앞의 내용은 정확하지만 어느 쪽이든 나타내는 설명서에는 아무것도 표시되지 않습니다.

답변

3

예, 문제가 없습니다. BeginInvoke()에 대한 각각의 호출에 대해 다른 IAsyncResult를 얻습니다. 델리게이트 객체 자체에 시작된 스레드와 연결된 상태가 없습니다.

관련 문제