2011-04-21 55 views
0

我正在使用3d方庫。 和我有下面的代碼:使用線程

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 2011-04-21 16:39:53

回答

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一旦被調用就執行。

我想你可以在一個單獨的線程中執行Connect,然後暫停該線程,但是這是充滿了問題;這裏列舉的太多了。