首页 > 解决方案 > vb.net - 如果没有可读取的内容,StreamReader 将挂起

问题描述

我有这个代码来读取 TCP 流:

  Function checkdata() As String
    Dim Stream As NetworkStream = client.GetStream()
    sr = New StreamReader(Stream)

    Dim s As String = sr.ReadLine() <------------
    Return s
  End Function

问题是如果流上没有新数据,代码就会挂在标记的行上。为什么?我该如何解决这个问题?

标签: vb.nettcpstreamstreamreader

解决方案


你可以使用.DataAvailablea 的属性NetworkStream吗?

Function checkdata() As String
    Dim Stream As NetworkStream = client.GetStream()
    If Stream.DataAvailable Then
        Dim SR = New StreamReader(Stream)
        Dim s As String = SR.ReadLine()
        Return s
    Else
        Return Nothing
    End If
End Function

推荐阅读