WPF:分配给RichTextBox.Document非常慢(7分钟!)

时间:2009-10-28 15:11:58

标签: c# .net wpf .net-3.5 richtextbox

我正在从XML构建格式化的FlowDocument。 XML格式良好,主要由10,000个节点组成,每个节点都有一个节点,字符串值为6个字符。

将XML解析为XElement并在内存中构建FlowDocument大约需要5秒钟。在我的应用程序中将FlowDocument分配给Document的{​​{1}}属性需要大约7分钟,并且在那段时间内最大化CPU。

以下是相关的代码:

RichTextBox

我想知道这里发生了什么。我已经对代码进行了分析,并查看了数千次对非托管方法的调用,例如// The following six lines of code execute in about 5 seconds var xml = XElement.Parse(response.Data); PrettyXmlConverter px = new PrettyXmlConverter(); FlowDocument fd = px.Render(xml); Paragraph p = new Paragraph(); p.Inlines.Add(new Run(response.TimeStamp.ToShortDateString() + " " + response.TimeStamp.ToLongTimeString())); fd.Blocks.InsertBefore(fd.Blocks.ElementAt(0), p); // This line of code takes about 7 minutes and maxes out the CPU for that time. tbResponse.Document = fd; fsFormatSubtrackBottomless

任何人都可以解决这个问题,或者想出一个解决方法吗?

2 个答案:

答案 0 :(得分:2)

摘录麦克唐纳的Pro WPF in C# 2010一书,p。 966:

WPF RichTextBox与之前的大多数富文本控件一样,可能有点迟缓。如果您需要保存大量数据,请使用复杂的逻辑来处理按键操作,或者添加自动格式化等效果(例如,Visual Studio的语法突出显示或Word的拼写检查器下划线), WPF RichTextBox可能赢得了'提供您所需的性能

答案 1 :(得分:0)

最后,我无法找到解决方法。

我正在使用一种解决方法 - 我只是不会在一定大小上“打印”消息。

如果有人有更好的解决方案,请随时发布。