性能流文档与表与大量的数据

本文关键字:数据 文档 性能 | 更新日期: 2023-09-27 18:12:18

我想做的是:
基于数据库中的数据生成报告,然后能够查看和打印报告。(在WPF c#中)

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

    从数据库中加载数据


    初始化一个新的Flowdocument

    创建一个RowGroup表
    循环我的LINQed数据并使用包含所需数据的单元格的TableRows填充RowGroup
  1. 将表格添加到Flowdocument

除了当记录的数量达到10k时,这几乎可以正常工作。然后由于某些原因,它只会占用我的CPU 25%,并且需要30分钟。滚动也几乎是不可能的,什么也没发生,只是完全卡住了。但当我创下1000个记录时,只需要18秒。2k则是74秒。

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

有谁能告诉我应该注意的事情吗?会有很大的帮助,我在这里碰壁了。

我想也许有一种方式,它只呈现当前页面,但我不知道有多少页面将与FlowDocument。

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

编辑:
处理它的时间似乎非常稳定,以1秒为余量。但是指数级的,在3k的情况下已经是164秒了。

Edit2:
经过更多的测试,我发现问题是在我向TableRow添加TableCell时出现的。如果没有这个,只需要1.6秒。

性能流文档与表与大量的数据

原因是分组。在wpf下,这个特性存在一个已知的性能问题。尝试删除分组进行测试,您将看到性能的提高!