1
同時に複数回実行されません。私は、同じコマンドを同時に複数回実行されませんので、頻繁にユーザーのジェスチャーを無効にしようとしています。PRISM(ViewModelに):コマンドを確認し
private readonly SemaphoreSlim _semaphoreSlim = new SemaphoreSlim(1);
public bool MyCommandCanExecute { get; set; } = true;
public DelegateCommand MyCommand { get; set; }
MyCommand = new DelegateCommand(async() =>
{
await _semaphoreSlim.WaitAsync();
try
{
MyCommandCanExecute = false;
// run code
}
finally
{
MyCommandCanExecute = true;
_semaphoreSlim.Release();
}
}).ObservesCanExecute(p => MyCommandCanExecute);
私はこの権利を守っているのか分かりません。
SemaphoreSlim
は残念ですか、安全のためにそこに放置する必要がありますか?- 私は手動でフラグをオンまたはオフにしているので、
ObservesCanExecute()
が必要ですか? - 同じビューモデルに複数のコマンドがあり、それぞれに別々のCanExecuteフラグがあります。私はすぐに別のコマンドが実行されている間にあるコマンドを有効にする必要がある場合に実行すると思っています。
_semaphoreSlim
は、進行中のすべてのコマンドを保留しているか、同じコマンドの複数の呼び出しを保持していますか?どんなにスレッドが実行されたコマンド何PropertyChanged
を誘発する性質を持つ