スムーズな UI 更新のために WPF の Application.DoEvents() を置き換えます
Application.DoEvents() は、スレッドがメッセージ ポンプに従うことを可能にするために古いバージョンの .NET に存在していましたが、.NET 4 以降 (WPF アプリケーションを含む) では直接使用できなくなりました。これにより、特に GUI の更新を処理する場合にパフォーマンスの問題が発生する可能性があります。
WPF では、Application.DoEvents() の代わりに、現在の Application オブジェクトの Dispatcher.Invoke メソッドを呼び出します。これにより、制御をメッセージ ポンプに移すことができ、保留中の UI 更新が確実に処理されるようになります。実装例は次のとおりです:
<code class="language-csharp">public static void DoEvents() { Application.Current.Dispatcher.Invoke(DispatcherPriority.Background, new Action(delegate { })); }</code>
提供されたコードで使用するには、キャンバスをスケーリングした直後に次の行を追加します。
<code class="language-csharp">DoEvents();</code>
これにより、更新されたボタンの位置が後続の出力に確実に反映され、元のコードで観察された差異が解決されます。変更された出力は次のようになります:
<code>scale 1, location: 296;315 scale 2, location: 296;315 scale 2, location: 346;365 scale 3, location: 346;365 scale 3, location: 396;415 scale 4, location: 396;415</code>
以上がスムーズな UI 更新のために WPF で Application.DoEvents() を置き換える方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。