2010-08-09 169 views
3

使用任何实际数量的文本时,WPF的RTB非常慢。而实际上,我的意思是你期望任何文本编辑器能够处理的(至少100kb),没有任何缓慢的迹象。WPF的RichTextBox性能问题

此预期RTB行为并非如此。实际上,当文本被整齐地分成小字和小段落时,控件的工作方式非常类似,我实现了一些机制,只要他们变得勇敢并输入任何相当长的内容,就会使我的用户失灵。我还没有找到实现上述机制的方法,所以我被迫(或者至少试图)解决这个问题。

我发现这令人深感不安,因为它对我没有任何意义。如果你是一个冒失鬼,并且碰巧键入了一串长长的字符而没有空格或中断,那么你就会成为一个锁定窗口几秒钟的受害者,从而打出一个不受欢迎的耐心测试。我急于想知道的是:为什么是这样?具体而言,为什么它会越来越慢地减速只有当文本间隔不一致?我疯了考虑有人使用我的计划将有一个破损的空间吧,因此会更倾向于注意到这个令人难以置信的放缓吗?在连续字符串的情况下,文本选择也受到严重影响。

我针对.NET 4.0,使用VS 2010,并且没有事件挂在RTB上;出于测试目的,它只是一个RTB(< RichTextBox />)在空白窗口。我能做些什么来改善其表现?仅仅为此编写我自己的控件是否更现实?是否将功能设置为我的最低要求?如果是这样,任何资源的链接将不胜感激。

值得注意的是,RichTextBox中的数据量可能非常小;我想说清楚的是,文本的格式对性能影响最大。

+3

它不会对人物造成长时间的伤害。 – 2010-08-09 23:35:01

回答

1

对于文本框的新实现,这不是一个不寻常的问题。它与用于计算换行符的算法有关。根据你所报告的行为类型,这听起来像他们使用的算法的效率强烈依赖于长度或单词(即它可能是,例如,O(n^2)相对于单词长度)。您应该直接向Microsoft报告(具有明确的示例),以便他们可以修复该错误。