我有一个变量Queue
,我在其中写入流中的信息。变量的初始化如下:
Public Shared Queue As List(Of String) = New List(Of String)(1024)
读取流的代码是
Public Shared Sub ReadStreamForever(ByVal stream As Stream)
Dim encoder = New UTF8Encoding()
Dim buffer = New Byte(2047) {}
Dim counter as Integer = 0
While True
If stream.CanRead Then
Dim len As Integer = stream.Read(buffer, 0, 2048)
Counter = Counter + 1
If len > 0 Then
Dim text = encoder.GetString(buffer, 0, len)
SSEApplication.Push(text)
Else
Exit While
End If
Else
Exit While
End If
End While
End Sub
push方法仅执行一些字符串操作,然后逐行添加到队列变量中
Public Shared Sub Push(ByVal text As String)
If String.IsNullOrWhiteSpace(text) Then
Return
End If
Dim lines = text.Trim().Split(vbLf)
SSEApplication.Queue.AddRange(lines)
End Sub
我要流传输的数据集不同,但是填充后的队列长度始终为2691,因此看起来长度有限。我只是不知道我在哪里限制队列变量以及如何扩大它。有人可以帮我吗?
答案 0 :(得分:0)
通常,List
没有固定长度,Add
方法调整List
的大小并为另一个元素留出空间。
如果要固定长度,可以使用简单的数组:Dim Queue(1024) As string
但是,当您尝试添加更多元素时,会出现异常,因此可以使用Push
方法检查条件:
If lines.Count < 1024 Then
SSEApplication.Queue.AddRange(lines)
End If
使用List
时,该检查还将防止包含超过1024个元素,但是如果您有固定长度的集合,我建议使用简单数组。
有用的资源:Arrays in Visual Basic,当您想使用ReDim
关键字添加额外的元素时,您还可以阅读如何扩大数组。