C# 为什么富文本框在加载大字符串时会冻结?
我有一个程序,我基本上需要从StringBuilder加载富文本。 问题是,有时我会得到一个100000行长的字符串(这对于程序来说是一种可能的情况),包括Rtf代码和颜色 问题不在于构建字符串,而是当我将Rtf属性指定给StringBuilder.ToString()时,需要4分钟才能加载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
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控件。