ViewModelのセットによって表されているアルゴリズムをデバッグしています。このアルゴリズムをデバッグするために、アルゴリズムの一部をステップ実行しながらViewを再描画したいと思います。これは可能ですか? (私はちょうど再ペイントし、すべてのイベントを処理するために "DoEvents"と呼ばれるものを使用しません)。WPF:デバッグ中にウィンドウをリフレッシュするには?
答えて
また、デバッガがブレークポイントで停止したとき、デバッガはアプリケーションのすべてのスレッドを一時停止します。私は似たような問題を抱えています。これは私がしていることです。
1)ブレークポイントの代わりに、私は本当に詳細な情報を持つトレースポイントを配置します。 Visual Studioでは、{abc}のように中括弧を入れると、変数ABCの値が標準出力に出力されます
2)ロギング。あなたのプログラムを一時停止できないときに非常に便利です。
3)構造化例外処理。問題が発生したときに例外をスローすると、プログラムがエラーのために巻き戻しを開始するときに簡単に追跡できます。
4)可能な限りアサートします。このようにしてプログラムが停止しなければ、アルゴリズムのすべてがうまくいくことを意味します。
このblog postは、あなたがあなたにWinFormsを使用していると思うと思いますが、これはWPFでも同じように動作します。
私のウィンドウには、デバッグ中に更新したいと思っていた高度なグラフィカルな情報が含まれていました。メッセージボックスは、デバッガのウォッチまたはトレースポイントよりもはるかに有用ではありません。 – Qwertie
あなたはその提案を誤解しているかもしれないと思います。ブログ投稿はMessageBoxにテキストを書くことを示唆していないので、再描画を強制するためにデバッガからMessageBox.Showを呼び出すことを提案しています。 これは、元のメッセージに書いたとおりにデバッガ内からApplication.DoEventsを呼び出すのと同じですが、ブログポストの最下部の説明では、いくつかの利点があります。 DoEventsはキューを排水してから。あなたはそれを見逃すでしょう。これは、あなたのフォームを見えるようにするためにあなたのwindosを並べ替える必要がある場合、problmかもしれません。 MessageBoxはクリックを待機します。 –
あまりにも悪いです。私はグラフィックスの問題をデバッグしていたので、テキストベースの出力は面倒なアプローチです。原則として、私はWPFのレンダラーがメインアプリケーションから別のスレッド上で実行されると聞いたので、デバッグ中に画面をリフレッシュすることが可能でなければなりません。デバッグ中にスレッドを実行させるだけでいいのですが... – Qwertie