2011-04-21 5 views
0

3D party library를 사용하고 있습니다.스레드를 사용하여 작업

Session s = new Session(AuthParam.Login, AuthParam.Password); 
s.Connect(); 

s.Connected += (sender, eventArgs) => 
     { 
      _contactCollection = s.ContactList.Contacts.Select(x => new Contact(x.Nickname, x.Uin)).ToList(); 
     }; 

     s.ConnectionError += (sender, eventArgs) => 
     { 

     }; 

s.Dispose(); 

s.Connect는 별도의 스레드에서 작업 : 와 나는 다음과 같은 코드가 있습니다. 그래서 나는 실행 기능을 멈추고 싶다. 제기 된 이벤트를 기다렸다가 계속 실행합니다. 내가 어떻게 해?

+1

이것은 분명하지 않습니다. 그래서'Connect()'는 비동기식입니까? 나는 정말로 의심 스럽다. 그것이 그렇다면 처분은 즉시 시작됩니다. – Aliostad

답변

1

Connect에 전화하기 전에 이벤트 처리기가 추가되도록 코드의 순서를 변경할 수없는 이유는 무엇입니까?

Session s = new Session(AuthParam.Login, AuthParam.Password); 

s.Connected += (sender, eventArgs) => 
    { 
    _contactCollection = s.ContactList.Contacts.Select(x => new Contact(x.Nickname, x.Uin)).ToList(); 
    }; 

s.ConnectionError += (sender, eventArgs) => 
    { 
    }; 

s.Connect(); 

당신이 그들이Connect를 호출하기 전에 배선되기 때문에 Connect 방법에 의한 발생한 이벤트를 얻기 위해 수익을 창출하는이 방법.

실제로는 Connect이 호출되면 실행을 막을 수있는 방법이 없습니다. 1

1 난 당신이 별도의 스레드에서 Connect를 실행 한 후 해당 스레드를 일시 중단 할 수 있다고 가정하지만 문제가 내포이다; 여기에 열거 할 너무 많은.

관련 문제