10
A
回答
21
绝对!只需在流上拨打Read(...)
即可。这将阻止,直到数据可用。除非你真的让直接使用TcpClient
,否则我通常会尽可能在流上做。如果你想使用套接字,只需调用Receive(byte[])
,这将阻塞,直到数据可用(或套接字关闭)。
现在,如果您不想阻止,则可以使用Stream.BeginRead
或Socket.BeginReceive
异步工作。 (或者ReadAsync
作为.NET 4.5)
我个人觉得Available
是几乎无用的(在两个流和插座)和循环一轮睡眠肯定是低效率的 - 你不希望有上下文切换当数据尚未进入时线程,并且当数据有进来时,您不希望等待睡眠完成。
相关问题
- 1. TcpClient - 等待数据可用
- 2. 导航前取消等待方法的最佳方法?
- 3. 等待.forEach()完成的最佳方式
- 4. 等待WCF服务的最佳方式?
- 5. 异步/等待方法和异常处理的最佳做法
- 6. 等待用等待方法来检查数据表
- 7. 等待从数据库异步获取数据以填充列表视图的方法的最佳方法
- 8. 最佳实践/等待
- 9. 等待完成PHP处理的最佳方法
- 10. 最好的方法等待在Java中
- 11. 等待应用程序启动的最佳方式
- 12. 确定python中两个数据集相等的最佳方法?
- 13. 在webapi中使用async等待的最佳做法
- 14. 等待方法未正确等待元素可见
- 15. 等待setContentView()方法
- 16. xml数据存储的最佳方法
- 17. 异步等待最佳实践
- 18. 让NSRunLoop等待标志被设置的最佳方式?
- 19. 在Java中等待Google Dataproc SparkJob的最佳方式是什么?
- 20. 等待在QTP中加载帧的最佳方式是什么?
- 21. 等待UI控件的最佳方式是什么?
- 22. 如何使功能的最佳方式等待响应ECMA6
- 23. 等待所有ajax回调执行的最佳解决方案
- 24. 在WP7上等待异步完成的最佳方式
- 25. 什么是等待GPS定位的最佳方式?
- 26. 在TestCafe中等待'WebComponentsReady'事件的最佳方式是什么?
- 27. 量角器:等待自定义事件的最佳方式
- 28. 等待HttpTaskAsyncHandler里的方法
- 29. 当用户等待(在Rails中)时处理大量数据的最佳实践?
- 30. Android - Blogger(最佳验证方法 - ClientLogin等)
使用StreamReader.ReadToEnd()也应该工作吗? – 2009-07-21 13:44:37