2014-02-21 3 views
0

이다 나는이 코드를했습니다 말 :하는 것은 현재의 이벤트 핸들러

클라이언트 클래스는 WCF 서비스 참조에서 생성됩니다
for(i=0;i<5;i++) 
{ 
    client c = new client(); 
    c.fooAsyncCompleted+=h; 
    c.fooAsync(i); 
} 

. 지금 함수 h에서 나는 c.fooAsync 결과가 현재 처리되고 있는지 알아야합니까? 그런 일을하는 방법이 있습니까?

당신은 핸들러의 첫 번째 있었던 파라미터에서 처리 이벤트의 소스를 검색 할 수 있습니다

답변

2

Visual Studio에서 생성 한 일반 WCF 프록시 클래스를 사용하는 경우 UserState 인수를 취하는 메서드 오버로드가 있어야합니다.

c.fooAsync(i, i); 

완성 된 처리기에서 EventArgs을 통해 해당 인수를 검색 할 수 있습니다.

h(object sender, fooAsyncCompletedEventArgs e) 
{ 
    var x = e.UserState; 
} 

이 정보로 콜백 호출이 무엇인지 알 수 있습니다.

0

, object sender

처리기를 가정하면 당신은 간단한 캐스팅을 통해 client 객체를 가질 수있다 (일반적으로)

void handler(object sender, EventArgs e) 

처럼 보인다

var source = (client)sender; 

정확하게 식별하는 방법은 사용자에게 달려 있습니다 (클래스 구조에 따라 다름) re ... 식별되어야하기 때문에 고유 한 "id"속성이 필요합니다.)