Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vb.net/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Vb.net 在RTB中对文本进行彩色格式化的更快方法_Vb.net_Colors_Richtextbox - Fatal编程技术网

Vb.net 在RTB中对文本进行彩色格式化的更快方法

Vb.net 在RTB中对文本进行彩色格式化的更快方法,vb.net,colors,richtextbox,Vb.net,Colors,Richtextbox,我正在写一个程序,从一个远程服务器读取到屏幕上的日志 每收到一个新包,程序在底部增加一行 目前,我使用文本框的速度,因为我得到约600-2200包每分钟,而RTB根本无法遵循 当行[]超过300行时,我删除顶行,以减少内存使用和速度降低 问题是我真的希望线条的颜色格式化,这样就更容易看到它输出的内容,因为流对大多数人来说太快了 据我所知,只有Select方法可以在RTB中为文本着色,但是我想知道,是否有更好的组件可以使用,然后是更可靠的standart RTB,然后是RTB?我认为最好的解决方案

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

每收到一个新包,程序在底部增加一行

目前,我使用文本框的速度,因为我得到约600-2200包每分钟,而RTB根本无法遵循

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

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


据我所知,只有Select方法可以在RTB中为文本着色,但是我想知道,是否有更好的组件可以使用,然后是更可靠的standart RTB,然后是RTB?

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

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

在不同的线程上读取和写入缓冲区时可能会遇到问题,在这种情况下,您可以尝试使用,但这可能会让您现在开始工作

没有人可以每秒读取37条消息,它看起来就像一个模糊的图像。试图让它更快是毫无意义的,它只会变得更模糊,更不可用。创建一个实用的用户界面,您的RTB问题也会消失。您可能是对的。。我一直懒得看到需要一个新的GUI。主要问题是。。。我从中读取远程日志的协议已经超过1000个不同的包,我只识别并成功地篡改了其中的60个包。。其余的是通过原始字节读取到ascii读取器。我目前使用文本框的主要原因是,我想知道程序对数据做了什么,以及我应该如何继续读取它们。不过,我可能应该开始将它们写入文件日志,而不是这样,使用suspendlayout和resumelayout的方法可能很方便:)