1

我目前正在尝试解决涉及加载和保存富文本的速度问题。这是详细信息。在我的应用程序中,我有一个 Question 类,它需要能够存储两个富文本。目前,这两个富文本作为 TextRanges 存储在 Question 类中。就保存/加载而言,我使用的是 TextRange.Load(Stream, DataFormats) 和 TextRange.Save(Stream, DataFormats)。一切正常...

我的问题是我需要从文件中保存/加载 1000 多个这样的问题。当我这样做时,保存/加载包含这些问题的文件需要 20~ 秒。最重要的是,我希望能够一次加载其中的几个文件……这可能会让用户等待几分钟。我确定我的问题现在很清楚了。

所以我开始调查为什么保存/加载文件需要这么长时间,并且从分析器中我发现保存/加载文件所花费的时间中有 80% 是在 TextRange.Load 和 TextRange.Save 方法中。

所以我的问题是......有没有人有任何建议或指针来加快我的文件保存/加载?

我试图想出另一种方法来将富文本存储在 Question 类和文件中。我很快就没有想法了,但我想在我承认之前来到这里。任何帮助是极大的赞赏。如果我需要澄清任何事情,也请告诉我。谢谢!

4

2 回答 2

1

每次调用 Load 和 Save 有多少开销,对于大范围调用 Load 一次与小范围调用多次有什么优势?加载 +1000 个问题时,您调用 Load 多少次?每个调用 Load 的行为是否都会在某处更新 RichTextBox 或 Flow Document?如果不是,一旦加载了 TextRanges,您将如何处理它们?

我注意到这个相关线程并认为我会提供一个建议:如果您将字节数组(或内存流)保存在 Question 类中而不是 TextRange 中,并且仅在您实际需要在 RichTextBox 中加载数据时才创建 TextRange (当问题的窗口打开时)?

于 2009-04-18T05:40:15.970 回答
0

您可能会研究threading。这样您就可以在不锁定 UI 的情况下加载您的问题。加载前 100 个,当它们用完时,再加载 100 个左右。

于 2009-04-18T04:45:34.057 回答