更快地在RTB中对文本进行颜色格式化

时间:2013-06-19 10:03:50

标签: vb.net colors richtextbox

我正在编写一个程序,用于从远程服务器读取登录屏幕。

本程序为每个新包添加了一行到底部。

目前我正在使用TextBox来提高速度,因为我每分钟大约需要600-2200个包,RTB根本无法跟进。

当行[]超过300行时,删除顶行,以减少内存使用和减速。

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

就像我所知道的那样,在RTB中只有选择方法来着色文本,但我想知道,如果有更好的组件使用,那么标准RTB,更可靠,然后是RTB ?

1 个答案:

答案 0 :(得分: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,但这可能会让您现在开始

相关问题