解决方案 »

  1.   

    所有的异步方法(beginconnect,beginaccept,beginrecieve),都是将操作添加进队列里等待系统线程池调用
    可能会使用当前线程在空闲时调用,也可能开启另一个线程执行,总之它区别于"同步阻塞",并不等待执行完毕就继续执行后续代码了
      

  2.   

    多谢回答。请问是否当调用Beginconnect时就向远程主机发送了连接请求,还是执行完Beginconnect以后,由系统在某一时刻去向远程主机发送连接请求?如果是后者,那么系统在什么时候发送这个连接请求,回调函数又是什么时候被系统调用的呢?EndConnect被调用就能说明连接成功了吗?
      

  3.   

    因为是异步的,所以你没法确定系统到底什么时候去调用,有可能立即使用了线程池中一个空闲线程去调用,也可能线程池已满,要等到其他线程执行完毕才会被调用.
    回调函数当然是在执行完毕才被执行的,EndConnect只是告诉系统,不再异步执行,改为同步执行后续代码.
      

  4.   

    BeginXXXX,只是分配分配线程,EndXXXX才会真正执行相关任务。
      

  5.   

    Begin*** 这样的方法都是异步方法,区别于同步方法,这种方法不会阻塞当前线程,可以调用 End*** 去同步结束这个方法,也可以通过注册事件来得到方法完成的通知。