【发布时间】:2010-12-10 21:48:59
【问题描述】:
我正在从 XML 构造一个格式化的 FlowDocument。 XML 格式良好,主要由 10,000 个节点组成,每个节点都有一个节点,其值为 6 个字符串。
将 XML 解析为 XElement 并在内存中构造 FlowDocument 大约需要 5 秒。在我的应用程序中,将FlowDocument 分配给RichTextBox 的Document 属性大约需要7 分钟,并且在这段时间内会耗尽CPU。
以下是相关代码:
// 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 和SubtrackFormatParaBottomless)的数十万次调用。
任何人都可以阐明这个问题,或者想出一个解决方法吗?
【问题讨论】:
标签: c# .net wpf .net-3.5 richtextbox