Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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
C# 在c中使用不同颜色向richtextbox添加新行#_C#_Richtextbox - Fatal编程技术网

C# 在c中使用不同颜色向richtextbox添加新行#

C# 在c中使用不同颜色向richtextbox添加新行#,c#,richtextbox,C#,Richtextbox,我创建了一个程序,它向cmd发送一个命令,从cmd获取输出,并用颜色显示在richtextbox中。 我写了这个函数: System.Windows.Documents.TextRange rangeOfText = new System.Windows.Documents.TextRange(this.Console.Document.ContentEnd, this.Console.Document

我创建了一个程序,它向cmd发送一个命令,从cmd获取输出,并用颜色显示在richtextbox中。 我写了这个函数:

           System.Windows.Documents.TextRange rangeOfText =
                new System.Windows.Documents.TextRange(this.Console.Document.ContentEnd,
                    this.Console.Document.ContentEnd)
                { Text = line + "\n" };
            rangeOfText.ApplyPropertyValue(TextElement.ForegroundProperty, color);
这个。控制台是我的richtextbox

问题是我从cmd中得到了很多行,所以UI被阻塞了很多。
还有比这更有效的方法吗?

如果您在排序时间内运行了太多命令,那么您的UI肯定会卡住。您必须创建单独的线程来读取文件并更新RichTextBox。这样做。 1.从文件中读取一个线程。将间隔设置为100毫秒。
2.收到数据后,请更新RichTextBox。您的新线程无法更新RichTExtBOx,因此您必须使用
delegate
更新RTB。比如“
richtexbox1.Invoke

为什么您认为RichTextBox会阻塞用户界面?如果RTB大小是固定的,为什么它会阻塞您的UI,抱歉,但我正在尝试理解您的问题。为了调试此问题,我创建了一个带有一些命令输出的.txt文件,为了说明此问题,我逐行读取此文件,每行之间的睡眠时间为10毫秒。在这种情况下,UI会被卡住几分钟。当我把它改为1000毫秒时,我工作正常。如果我使用“appendText”方法(不改变颜色),一切都可以。所以我知道我的函数每秒不能处理很多行。