10
A
回答
21
絕對!只需在流上撥打Read(...)
即可。這將阻止,直到數據可用。除非你真的讓直接使用TcpClient
,否則我通常會盡可能在流上做。如果你想使用套接字,只需調用Receive(byte[])
,這將阻塞,直到數據可用(或套接字關閉)。
現在,如果您不想阻止,則可以使用Stream.BeginRead
或Socket.BeginReceive
異步工作。 (或者ReadAsync
作爲.NET 4.5)
我個人覺得Available
是幾乎無用的(在兩個流和插座)和循環一輪睡眠肯定是低效率的 - 你不希望有上下文切換當數據尚未進入時線程,並且當數據有進來時,您不希望等待睡眠完成。
相關問題
- 1. TcpClient - 等待數據可用
- 2. 等待多個TcpClient有數據可用 - WaitHandle或Thread.Sleep?
- 3. 導航前取消等待方法的最佳方法?
- 4. StackExchange.Redis - 等待鎖的最佳方式
- 5. 等待.forEach()完成的最佳方式
- 6. 等待WCF服務的最佳方式?
- 7. 異步/等待方法和異常處理的最佳做法
- 8. 等待從數據庫異步獲取數據以填充列表視圖的方法的最佳方法
- 9. 等待用等待方法來檢查數據表
- 10. 最佳實踐/等待
- 11. 等待傳感器數據的方法
- 12. 等待完成PHP處理的最佳方法
- 13. 在for循環中等待輸入的最佳方法?
- 14. 最好的方法等待在Java中
- 15. 等待應用程序啓動的最佳方式
- 16. 確定python中兩個數據集相等的最佳方法?
- 17. Java從客戶端等待並獲取數據的最佳方式
- 18. 在webapi中使用async等待的最佳做法
- 19. 插入數據庫的最佳方法?
- 20. xml數據存儲的最佳方法
- 21. 數據過濾的最佳方法
- 22. 存儲數據表的最佳方法
- 23. 發送JSON數據的最佳方法。
- 24. 等待方法未正確等待元素可見
- 25. 使用PySerial可以等待數據嗎?
- 26. 等待setContentView()方法
- 27. 可視化:最佳方法?
- 28. 異步等待最佳實踐
- 29. 等待UI控件的最佳方式是什麼?
- 30. 如何使功能的最佳方式等待響應ECMA6
使用StreamReader.ReadToEnd()也應該工作嗎? – 2009-07-21 13:44:37