我只是想知道一下异步的方法区别,比如Socket中的BeginConnect和Connect,BeginConnect是异步的方法,Connect不是异步,如果我要是想实现一个异步的效果,是不是直接调用BeginConnect就可以呢?还是要把他放到一个新开启的线程中去才可以现实,,如果要是把他放到一个新开启的线程中去现实异步的效果,那Connect不是也可以有异步的效果了?那他们2个有什么区别呢?

解决方案 »

  1.   

    直接调用,微软帮你写好了,他会去创建线程执行方法~~~~~Socket.BeginConnect
    不等待连接结果就可以执行下面的代码~~~~
    Socket.Connect
    必须等待执行完毕才能执行接下来的代码~~~~~~
      

  2.   


    请问下,那浏览器中的程序适用否?Asp.net C#
      

  3.   

    你需要将处理连接结果的方法作为参数放入BeginConnect中,就可以了.
    从你所谓的是Connect也可以实现异步,可以看出你对同步和异步的认识可能还有点不对.
    即时你使用了新的线程,那么在你使用Connect等待连接结果时,你的这个线程处于阻塞状态,而BeginConnect就不同了.
      

  4.   

    asp.net的后台代码当然也可以使用tcp通讯了.
      

  5.   

    如果你在新的线程中用Connect,的确是和BeginConnect的效果差不多,不过有一点点区别,那就是BeginConnect利用的是线程池,主程序关闭后会自动关闭所有线程池中的线程的,自己新建的线程则需要手动去终止,否则直到运行结束不会停止。另外类似Receive和Send等同步方法可以设置超时时间,那个超时时间对BeginXXX无效,对于BeginXXX,只能自己处理长时间未响应的动作。