質問

XMLからフォーマット済みの FlowDocument を作成しています。 XMLは整形式で、主にそれぞれが6文字の文字列値を持つ単一ノードを持つ10,000個のノードで構成されています。

XMLを XElement に解析し、メモリ内に FlowDocument を構築するには、約5秒かかります。アプリケーションの RichTextBox Document プロパティに FlowDocument を割り当てると、約7分かかり、その間CPUを使い果たします。

関連するコードは次のとおりです。

// The following six lines of code execute in about 5 seconds

var xml = XElement.Parse(response.Data);

PrettyXmlConverter px = new PrettyXmlConverter();
FlowDocument fd = px.Render(xml);

Paragraph p = new Paragraph();
p.Inlines.Add(new Run(response.TimeStamp.ToShortDateString() + " " + response.TimeStamp.ToLongTimeString()));
fd.Blocks.InsertBefore(fd.Blocks.ElementAt(0), p);

// This line of code takes about 7 minutes and maxes out the CPU for that time.
tbResponse.Document = fd;

ここで何が起こっているのだろうか。コードのプロファイルを作成したところ、 fsFormatSubtrackBottomless SubtrackFormatParaBottomless などのアンマネージメソッドの呼び出しが何千回もありました。

誰でも問題に光を当てることができますか、または回避策を思い付きますか?

役に立ちましたか?

解決 2

最終的に、これに対する解決策が見つかりませんでした。

回避策を使用しています-単に「きれいに印刷」しないでください。特定のサイズを超えるメッセージ。

より良い解決策があれば、気軽に投稿してください。

他のヒント

MacDonaldの Pro WPF in C#2010 の本からの抜粋。 966:

WPF RichTextBoxは、それ以前のほとんどのリッチテキストコントロールと同様に、少し遅くなる可能性があります。大量のデータを保持する必要がある場合は、複雑なロジックを使用してキー入力を処理するか、自動書式設定(Visual Studioの構文強調表示やWordのスペルチェック下線など)などの効果を追加します。< strong> WPF RichTextBoxはおそらく必要なパフォーマンスを提供しません。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top