1

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

しかし、UI以外のスレッドでFlowDocumentを生成することはできません。さもなければ、四角形と画像を挿入しようとすると、STAスレッドではないという不公平なランタイムエラーが発生します。

私がいる同じ問題があるように見えるのStackOverflow上のスレッドのカップルが...あります

Accessing a WPF FlowDocument in a BackGround Process

「WPF「バックグラウンドプロセスでWPF FlowDocumentへのアクセス」

:ですバックグラウンドスレッドでUIを読み込むことは不可能ですか? "最初のリンクで WPF : Is it impossible to UI load in background thread?

誰かが次のことを示唆している:

私は思い何

」:XamlWriterを使用してXDocumentにFlowDocumentをシリアル化シリアル化のタスクはディスパッチャを含むが、それはだ後。あなたは、あなたが望むだけ多くの不自然な並列分析を実行することができ、UIの何もそれに影響を与えることはありません(XDocumentであれば、XPathでクエリを実行します。実際には爪。) "

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

多くのTIA

+0

最終的なFlowDocumentを使用してXpsDocumentを作成し、これをXAMLのDocumentViewerコントロールを使用してFixedDocumentSequenceとして表示します。 – JamesPD

+0

バックグラウンドスレッドでコンテンツを生成する前に、uiスレッドでflowdocumentをインスタンス化していますか?何か似たようなもの? – TheZenker

答えて

0

あなたの引用の手段の著者は、多分これはあなたの問題の解決策になることができますどのように起草への答えではない本当にながら:あなたはApplication.Idleイベントに自分自身をフックした場合 、することができますそこにFlowDocumentを1つずつ構築します。このイベントはUIスレッド内にありますので、バックグラウンドワーカーのような問題は発生しません。 あなたは一度にあまりにも多くの仕事をしないように気をつけなければなりません。さもなければ、あなたのアプリケーションをブロックします。 生成プロセスを小さなチャンクに分けることができる場合は、このイベントでこれらのチャンクを1つずつ処理できます。

関連する問題