代码之家  ›  专栏  ›  技术社区  ›  Winston Smith

wpf:分配给richtextbox。文档速度非常慢(7分钟!)

  •  4
  • Winston Smith  · 技术社区  · 15 年前

    我正在构造一个格式化的 FlowDocument 从XML。XML格式良好,主要由10000个节点组成,每个节点有一个具有6个字符串值的节点。

    将XML解析为 XElement 以及构建 流程文档 在记忆中大约需要5秒钟。分配 流程文档 Document 财产 RichTextBox 在我的应用程序中,大约需要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 .

    有谁能解释这个问题,或者想出一个解决办法?

    2 回复  |  直到 13 年前
        1
  •  2
  •   Sabuncu    13 年前

    以下摘自麦克唐纳 Pro WPF in C# 2010 书,第966页:

    wpf richtextbox和之前的大多数富文本控件一样,可能有点慢。如果需要保存大量数据,可以使用复杂的逻辑来处理按键,或者添加诸如自动格式化(例如,visual studio的语法突出显示或word的拼写检查器下划线)之类的效果, wpf richtextbox可能无法提供所需的性能 .

        2
  •  0
  •   Winston Smith    15 年前

    最后,我找不到解决办法。

    我正在使用一个解决方案-我只是不“漂亮地打印”超过一定大小的消息。

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