ICode9

精准搜索请尝试: 精确搜索
首页 > 编程语言> 文章详细

c#-来自MSDN的异步客户端套接字示例

2019-12-01 12:17:16  阅读:196  来源: 互联网

标签:msdn sockets asynchronous c


我有一个关于这个例子的问题:Asynchronous Client Socket.
它说这些操作是异步的,它们是(显示了beginxxx / endxxx),但是它们使用ManualResetEvent,并且如果我正确理解了示例代码,则这样调用:

  Receive(client);
  receiveDone.WaitOne();

将阻塞线程,它们被从中调用.因此,如果我有一个带有UI的应用程序,并且从主线程调用了该异步套接字代码-应用程序将冻结…或者我错了吗?抱歉,我希望通过tcp异步发送/接收一些命令,而不会冻结主线程.我是否必须调用该示例中的所有套接字操作以避免冻结?

解决方法:

是的,已设置此代码,使其可以同步运行.但是,您可以轻松地自己使用Beginxxx和Endxxx调用,而不用在编写此(较差)异步操作示例时将它们包装起来.

为了进一步说明,本文确实异步运行每种方法,但随后使用blocker.WaitOne()进行了阻止.更好的方法可能是让beginconnect回调触发发送,将其回调触发接收,等等.

您也可以使用TPL并利用其ContinueWith功能来执行此操作.然后您的代码甚至看起来可能更干净:)

标签:msdn,sockets,asynchronous,c
来源: https://codeday.me/bug/20191201/2080865.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有