关于异步的方法区别例如BeginConnect和Connect

c11eclipse 2010-03-17 11:51:57
我只是想知道一下异步的方法区别,比如Socket中的BeginConnect和Connect,

BeginConnect是异步的方法,Connect不是异步,如果我要是想实现一个异步的效果,是不是直接调用BeginConnect就可以呢?还是要把他放到一个新开启的线程中去才可以现实,,

如果要是把他放到一个新开启的线程中去现实异步的效果,那Connect不是也可以有异步的效果了?

那他们2个有什么区别呢?
...全文
940 7 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
c11eclipse 2010-03-18
  • 打赏
  • 举报
回复
多谢楼上各位
qldsrx 2010-03-18
  • 打赏
  • 举报
回复
如果你在新的线程中用Connect,的确是和BeginConnect的效果差不多,不过有一点点区别,那就是BeginConnect利用的是线程池,主程序关闭后会自动关闭所有线程池中的线程的,自己新建的线程则需要手动去终止,否则直到运行结束不会停止。另外类似Receive和Send等同步方法可以设置超时时间,那个超时时间对BeginXXX无效,对于BeginXXX,只能自己处理长时间未响应的动作。
Alden 2010-03-18
  • 打赏
  • 举报
回复
asp.net的后台代码当然也可以使用tcp通讯了.
Alden 2010-03-18
  • 打赏
  • 举报
回复
你需要将处理连接结果的方法作为参数放入BeginConnect中,就可以了.
从你所谓的是Connect也可以实现异步,可以看出你对同步和异步的认识可能还有点不对.
即时你使用了新的线程,那么在你使用Connect等待连接结果时,你的这个线程处于阻塞状态,而BeginConnect就不同了.
c11eclipse 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 starfd 的回复:]
直接调用,微软帮你写好了,他会去创建线程执行方法~~~~~

Socket.BeginConnect
不等待连接结果就可以执行下面的代码~~~~


Socket.Connect
必须等待执行完毕才能执行接下来的代码~~~~~~
[/Quote]

好像还感觉和什么堵塞和回调有关系,好乱,一直理不清。
c11eclipse 2010-03-17
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 starfd 的回复:]
直接调用,微软帮你写好了,他会去创建线程执行方法~~~~~

Socket.BeginConnect
不等待连接结果就可以执行下面的代码~~~~


Socket.Connect
必须等待执行完毕才能执行接下来的代码~~~~~~
[/Quote]

请问下,那浏览器中的程序适用否?Asp.net C#
  • 打赏
  • 举报
回复
直接调用,微软帮你写好了,他会去创建线程执行方法~~~~~

Socket.BeginConnect
不等待连接结果就可以执行下面的代码~~~~


Socket.Connect
必须等待执行完毕才能执行接下来的代码~~~~~~

111,098

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • AIGC Browser
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧