我有一个变量 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
推送方法只是执行一些字符串操作,并逐行添加到队列变量中
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,所以它看起来有点长度 . 我只是不知道我在哪里限制队列变量以及如何放大它 . 谁能在这帮助我?
1 回答
通常,
List
没有固定长度,Add
方法调整List
的大小,并为另一个元素腾出空间 .如果你想要固定长度,你可以使用简单的数组:
Dim Queue(1024) As string
但是,在尝试添加更多元素时会出现异常,因此您可以在
Push
方法中检查条件:当使用
List
时,该检查还将阻止超过1024个元素,但如果您有固定长度的集合,我建议使用简单数组 .有用的资源:Arrays in Visual Basic,你还可以阅读,如何放大数组,当你想使用
ReDim
关键字添加额外的元素 .