Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/visual-studio-2010/4.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#_Visual Studio 2010_Colors_Richtextbox_Performance - Fatal编程技术网

C# 为什么富文本框在加载大字符串时会冻结?

C# 为什么富文本框在加载大字符串时会冻结?,c#,visual-studio-2010,colors,richtextbox,performance,C#,Visual Studio 2010,Colors,Richtextbox,Performance,我有一个程序,我基本上需要从StringBuilder加载富文本。 问题是,有时我会得到一个100000行长的字符串(这对于程序来说是一种可能的情况),包括Rtf代码和颜色 问题不在于构建字符串,而是当我将Rtf属性指定给StringBuilder.ToString()时,需要4分钟才能加载 TextBox.Rtf = Build.ToString(); 如果我从StringBuilder复制相同的字符串,并将其加载到写字板中,大约需要2或3秒钟。我通过使用SendMessage()和WM_S

我有一个程序,我基本上需要从StringBuilder加载富文本。 问题是,有时我会得到一个100000行长的字符串(这对于程序来说是一种可能的情况),包括Rtf代码和颜色

问题不在于构建字符串,而是当我将Rtf属性指定给StringBuilder.ToString()时,需要4分钟才能加载

TextBox.Rtf = Build.ToString();
如果我从StringBuilder复制相同的字符串,并将其加载到写字板中,大约需要2或3秒钟。我通过使用SendMessage()和WM_SETREDRAW来演示RTB的重画,但这并没有改变任何事情


有什么建议吗?

对不起,RTB控件不会剪切10000行,更不用说100000行了


一种可能的优化方法是从文件或流中加载,但我不怀疑有多大改进。

只是猜测,但是否会触发垃圾收集器?这应该不会持续4分钟,但是…

RichTextBox
使用了
riched20.dll
,它是库
丰富编辑控件的
v3.0
。但是,写字板使用的是
msfedit.dll
,它的版本是
4.1

版本
4.1
v3.0

有关版本的更多信息,请参见此

那么写字板是如何在2-3秒内完成的呢?@Miguel,我怀疑写字板没有使用RTB控件。