private EventWaitHandle Logon = new EventWaitHandle(false, EventResetMode.AutoReset);for(int i =0; i <sentinfo.count; i )
{
 SendStr(Client, sentinfo[i]);//发送登录信息,等待服务端返回结果之后,取数据后,进行下一个登录
 Logon .WaitOne();//等待收到数据Logon .Set();
}登录是异步接收数据,收到数据后Logon .Set();我这里是多个用户登录问题,只能登录一次,就会阻塞,异步接收数据也会阻塞,等于整个阻塞了。
我这种情况怎么解决? 多次就不可以了。怪了

解决方案 »

  1.   

    Logon .WaitOne你这句话就会阻塞,后面的进不来,你可以将sendstr中通过委托返回,sendstr中可以用异步或线程
      

  2.   

    sendstr 我这里是异步的,我这里必须要等到返回的数据后,才能下面一条登录,发送之后还是要等待返回结果。不用Logon,有别的办法吗?谢谢
      

  3.   

    那Logon .WaitOne也该在sendstr中
    sendstr()
    {
    开始
    Logon .WaitOne
    }
    for循环中用用Logon .Set或者就是用AsyncCallback+委托来处理异步
      

  4.   

    使用多个事件
    在收到服务端返回结果进行set在循环外部使用WaitAll,这样所有事件都set后,WaitAll才能通过。