2

FlowDocument大量のデータセットから動的に生成する必要があります。このプロセスには数分かかるため、UIをハングさせるのではなく、バックグラウンドスレッドで操作を実行したいと思います。

ただし、FlowDocumentUI以外のスレッドでを生成することはできません。そうしないと、長方形を挿入しようとすると、画像がSTAスレッドではないことを示す実行時エラーが発生します。

StackOverflowには、私が抱えているのと同じ問題を抱えているように見えるスレッドがいくつかあります。

最初のリンクで、誰かが次のことを提案しています。

「私がすること:を使用して、XamlWriterをにシリアルFlowDocument化しXDocumentます。シリアル化タスクにはDispatcher、が含まれますが、一度実行すると、データの奇抜な並列分析を必要なだけ実行でき、UIの何も影響しません。(また、一度それXDocumentをクエリするとXPath、問題が実際に釘である限り、これはかなり良いハンマーです。)」

誰かがこれによって作者が何を意味するのか詳しく説明できますか?

4

2 に答える 2

0

引用の作成者が何を意味するのかを詳しく説明することに対する実際の答えではありませんが、おそらくこれが問題の解決策になる可能性があります。Application.Idle イベントに自分自身をフックすると、そこで FlowDocument を 1 つずつ作成できます。このイベントはまだ UI スレッドにあるため、バックグラウンド ワーカーのような問題は発生しません。ただし、一度に多くの作業を行わないように注意する必要があります。そうしないと、アプリケーションがブロックされます。生成プロセスを小さなチャンクに分割できる場合は、このイベントでそれらのチャンクを 1 つずつ処理できます。

于 2012-04-25T10:02:29.503 に答える