1

現在、リッチテキストの読み込みと保存に関する速度の問題に取り組もうとしています。詳細はこちら。私のアプリケーションには、2 つのリッチテキストを格納できる必要がある Question クラスがあります。現在、これら 2 つのリッチテキストは、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 を 1 回呼び出すのと、小さな範囲で何度も呼び出すのに利点はありますか? +1000 の質問をロードするときに Load を何回呼び出しますか? Load を呼び出す各操作は、RichTextBox または Flow Document をどこかで更新していますか? そうでない場合は、TextRanges を読み込んでから何をしていますか?

私はこの関連スレッドに気づき、提案を提供すると思いました: TextRange の代わりに Question クラスにバイト配列 (またはメモリ ストリーム) を保存し、実際に RichTextBox にデータをロードする必要がある場合にのみ TextRange を作成するとどうなるでしょうか (質問のウィンドウが開いたとき)?

于 2009-04-18T05:40:15.970 に答える
0

threadingを調べるかもしれません。このようにして、UI をロックすることなく質問を読み込むことができます。最初の 100 個をロードし、それらがなくなったら、別の 100 個程度をロードします。

于 2009-04-18T04:45:34.057 に答える