性能Flowdocument与表有大量数据

时间:2011-10-24 12:46:21

标签: c# wpf flowdocument

我尝试做什么:
根据数据库中的数据生成报告,然后能够查看并打印它。 (这在WPF C#中)

我是怎么做的:(动态地,通过代码)
我的窗口很简单,它只是一个没有任何内容的FlowDocumentPageViewer。

  1. 我从数据库中加载数据
  2. 使用LINQ正确分组
  3. 初始化新的Flowdocument
  4. 制作一个带有RowGroup的表
  5. 循环我的LINQed数据,并使用包含具有所需数据的单元格的TableRows填充RowGroup
  6. 将表添加到Flowdocument
  7. 这几乎可以正常工作,除非记录数量达到10k。然后由于某种原因它只是将我的CPU吸收到25%并且需要30分钟。滚动也几乎是不可能的,不会发生任何事情,它只是完全堵塞。 但是当我获得1k记录时,需要18秒。用2k,它的74秒。

    但是,我不使用表格中标准的单元格方式,我必须为每个单元格制作一个TextBlock,并将其与BlockUIContainer一起使用。但经过一些测试后,它似乎对生成文档没有太大影响。

    任何有关我应该担心的事情提示的人?这将是一个重要的帮助,我在这里打砖墙。

    我想过可能只是渲染当前页面的方式,但我不知道FlowDocument会有多少页面。

    我使用的数据类型只是字符串,有时是复选框(只读)。

    编辑:
    处理它的时间似乎非常稳定,保证金为1秒。但是指数,3k已经是164秒了。

    EDIT2:
    经过一些测试后,我发现 问题是我将TableCell添加到TableRow时。没有它,它只需要1.6秒。

1 个答案:

答案 0 :(得分:0)

原因是分组。在wpf下,此功能存在已知的性能问题。尝试删除分组以进行测试,您将看到性能提升!