0

UIの変更(マクロの読み込み中)を含む多くのアクションを実行するC#/ WPFアプリケーションがありますが、何かが動いて待機するように指示するモーダルウィンドウが必要です。

マクロの読み込み作業はメインのアプリケーションスレッドで実行する必要がありますが、モーダルウィンドウを印刷する方法は、マクロの読み込みによってブロックされないようにする必要がありますが、UIのものであるためアプリケーションスレッドで実行する必要があります。

現在、待機中のダイアログを表示しながら、LoadMacroをApplication.Current.Dispatcher.InvokeのBackgroundWorkerに配置しています。しかし、UIを更新するために2人が互いに戦うため、満足のいくものではありません。

では、どうすればよいですか?

4

1 に答える 1

4

ディスパッチャーからバックグラウンド ワーカーを実行する必要はありません。

モーダル ウィンドウをロードし、その ProgressChanged イベントをサブスクライブしているバックグラウンド ワーカーを開始します。その後、バックグラウンド ワーカーで ReportProgress に好きなものを渡して、UserState プロパティのモデル ウィンドウを更新できます。

http://msdn.microsoft.com/en-us/library/system.componentmodel.backgroundworker.progresschanged.aspx

于 2011-03-14T13:50:29.230 に答える