次のようなコマンドの execute メソッドがあるとします。
private void Execute()
{
// Bound to a wait indicator in the UI
Searching = true;
// Do some long running process
Thread.Sleep(2000);
Searching = false;
}
Searching が True に設定されている場合、それがバインドされている UI 要素は更新されません (Searching が OnPropertyChanged 呼び出しを送信しても)。
ただし、Thread.Sleep が完了すると、UI は変更を処理し、Searching がバインドされていることを示す待機インジケーターを表示します。
これで、長時間実行されるプロセス (Thread.Sleep) の呼び出しを非同期にすることが従来の知恵であることがわかりました。
しかし、非同期ライブラリを使用していないと仮定すると、WPF に今すぐ検索でバインディングを実行するように指示する方法はありますか?
このようなもの:
private void Execute()
{
// Bound to a wait indicator in the UI
Searching = true;
// MADE UP CODE
Binding.UpdateBindingNow("Searching");
// END MADE UP CODE
// Do some long running process
Thread.Sleep(2000);
Searching = false;
}
更新:私が試したこと:
- Dispatcher を使用して、コマンドを UI に個別に送信してみます。
- Dispatcherも優先度を高くしてみました。