0

我正在编写一个程序,从远程服务器读取日志到屏幕。

该程序会在收到的每个新包裹的底部添加 1 行。

目前我正在使用 TextBox 来提高速度,因为我每分钟收到大约 600-2200 个包裹,而 RTB 根本跟不上。

当 lines[] 超过 300 行时,我删除了第一行,以减少内存使用和速度降低。

问题是我真的希望线条颜色格式化,因此更容易看到它输出的内容,因为流对于大多数人眼来说太快了。

据我所知,在 RTB 中只有 Select 方法可以为文本着色,但我想知道,如果有任何组件更好用,那么标准 RTB,更可靠,然后是 RTB?

4

1 回答 1

1

我认为最好的解决方案是有一个中间缓冲区(队列)来存储从包中收集的信息。

Dim _buffer as New List(Of String)

当一个新包到达时,将其添加到缓冲区的末尾:

_buffer.Add("package contents")

然后,您可以使用计时器每半秒读取一次缓冲区的内容并对文本框进行着色。

Private Event Timer_Tick 
    Do Until _buffer.Count = 0
        rtb.Text += _buffer(0)
        'colourise the textbox
        _buffer.RemoveAt(0)
    Loop
End Sub

您可能会在单独的线程上读取和写入缓冲区时遇到问题,在这种情况下您可以尝试使用SyncLock但这可能会让您暂时停止

于 2013-06-20T13:24:32.963 回答