我目前正在尝试解决涉及加载和保存richtext的速度问题。这是详细信息。在我的应用程序中,我有一个Question类,需要能够存储两个richtexts。目前,这两个richtexts作为TextRanges存储在Question类中。至于保存/加载,我使用TextRange.Load(Stream,DataFormats)和TextRange.Save(Stream,DataFormats)。一切正常......
我的问题是我需要从文件中保存/加载1000多个这样的问题。当我这样做时,保存/加载包含这些问题的文件需要20秒。最重要的是,我希望能够一次加载其中的几个文件......这会让用户等待几分钟。我相信我现在的问题很清楚了。
所以我开始研究为什么保存/加载文件这么长时间以及从分析器中我发现保存/加载文件的80%时间都在TextRange.Load和TextRange.Save方法中。
所以我的问题是......有没有人有任何建议或指示加快我的文件保存/加载?
我试图想出另一种方法将richtext存储在Question类和文件中。我很快就用完了想法,但是在我承认之前想来这里。任何帮助是极大的赞赏。如果我需要澄清任何事情,也请告诉我。谢谢!
答案 0 :(得分:1)
每次调用Load和Save有多少开销,对于大范围调用Load一次有什么好处,而对于小范围调用很多次?加载+1000个问题时,您拨打多少次电话?每个调用Load的行为是在某处更新RichTextBox还是Flow Document?如果没有,你加载TextRanges后你在做什么?
我注意到这个相关的thread并认为我会提出一个建议:如果你在Question类而不是TextRange中保存字节数组(或内存流),并且只在你真正需要时创建TextRange怎么办?在RichTextBox中加载数据(当问题窗口打开时)?
答案 1 :(得分:0)
您可以查看threading。这样您就可以在不锁定UI的情况下加载问题。加载前100个,当它们用完时,再加载100个左右。