使用线程

时间:2011-04-21 16:35:10

标签: c# multithreading

我正在使用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 个答案:

答案 0 :(得分: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然后暂停该线程,但这充满了问题;太多了,无法在此列举。