2017-03-18 1 views
0

複雑なグラフィックを描画するためにWPFのOnRenderをオーバーライドしています。これにはほとんど時間がかかりません。私は、アプリがクラッシュしなかったことをユーザに示したいが、レンダリングには単に「時間がかかる」。WPFフォームでレンダリングステータスを表示するにはどうすればいいですか?

どうすればいいですか? OnRender呼び出し中にUIを変更することはできないようです。

+0

あなたの最後の文が正しいかあなたがUIを変更している間、あなたはUIを変更することはできません。これらの2つの操作は同じスレッド上にあるため、非同期ではなく順次実行されます。 – Stewbob

答えて

0

"ビジーインジケータ"を図面の上に配置することを話しています。

「Loading ...」と書かれた半透明のグリッドを上に置くだけです。 これで完了です。

複雑なレンダリングを入力すると一度更新するboolと、完了したら一度更新するboolの可視性をバインドします。

それとも、モーションを見たい場合はグラデーションの背景とスピニング楕円を置く。..

0

OnRender方法は、UIスレッド上で実行されますので、あなたは、このような対話型のProgressBarを表示するなど、何をするか、またはユーザー入力に応答することはできませんあなたのコードの実行中に。

あなたができることは、別のスレッドで起動する新しいウィンドウをポップアップし、複雑なグラフィックスを描画する直前にこのウィンドウを表示することです。

これに関する詳細については、私の答えを次のような質問で参照してください。

Wait screen during rendering UIElement in WPF

OnRender方法は、あなたがして、一時的な「ロード」ウィンドウを閉じて戻ってきたら:

Can I stop WPF from executing UI actions out of the order in my code

関連する問題