世の中には特に意味はなくても、ボタンをダブルクリックする人種がいるのです。クリックイベントに結び付けられた処理は2回行われてしまい、(押した人からすると)意図しない動作をし、激怒します。AsyncReactiveCommandを使用すると簡単にこれを防ぐことが出来ます。あなたのプログラムに意図せず2回動作したらまずい処理(ex.課金アイテムの使用、発注書の送信など)が含まれていたら、AsyncReactiveCommandを検討する価値はあります。v2.8以前AsyncReactiveCommand登場前のV2.8以前ではCommandとは別にプロパティを作り、コマンドの実行可否を結びつける必要がありました。全てのCommandが同時に押せなくなってしまうため、それはそれで複数のCommand(ボタン)を連続で押したいせっかちな人は激怒します。RxのBufferなどで一定時間以内のイベントをまとめるのもめんどうです。Aの場合ですとかんな感じです。ReactiveCommand」があればこれを解決できます。これがまさにv2.9で登場したAsyncReactiveCommandです。AsyncReactiveCommandを使用AsyncReactiveCommandを使用してコードを書き直してみます。動作はからボタンをクリックするとになり、0.5秒経過すると上の画面に戻ります。それぞれのCommandは独立しているので、片方が押された後、別のCommandをすぐ押すこともできます。v2.9.0とv3.0.0-pre5をリリースしました。かずきのBlog@hatenaのように共通プロパティを使用することも出来ます。まとめAsyncReactiveCommandを使用することで簡単に意図しないダブルクリックを抑制できました。上記リンクでもそうですが、AsyncReactiveCommandは重たい処理や同時に実行されたくない処理で使用する、というシーンで説明されることが多いです。重たい処理でなくとも、意図せず2回実行されては困る場合にも有用です。バックグラウンドで動く処理などの場合、UI側に処理したことを伝える必要があります。上記コードのように処理後にAsyncReactiveCommandを0.5秒ほど待機させれば、その間ボタンがグレイアウトしますのでView側には何も書かずにすみます。おまけAsyncReactiveCommandのコードスニペットこれ書いてから、そもそもAsyncReactiveCommandの記事自体がQiitaに無いことに気づきました。これ使ってガンガンAsyncReactiveCommandを書いて下さい。upLoginユーザーは見つかりませんでした。