0

RXのCancelEventArgに相当するものはありますか?保存前に発生する更新イベントがリポジトリにあります。InvocationListを取得し、各EventHandlerを反復処理して、保存を中止するようにキャンセルフラグが設定されているかどうかを確認します。私はRX初心者であり、ObservablevsEventsに関するRXワークショップを見てhttp://channel9.msdn.com/Series/Rx-Workshop/Rx-Workshop-Observables-versus-EventsEventHandler をどのように置き換えることができるか疑問に思いました件名を使用して、サブスクライバーの1人がイベントをキャンセルするかどうかを確認します。

イベントをサブジェクトに変換できない場合、EventHandlerのObservableを取得し、OnNextでEventHandler呼び出しから送信者とCancelEventArgsにアクセスする方法はありますか?

4

1 に答える 1

0

Observable.FromEvent を使用すると、次のようにイベント引数にアクセスできます。

IObservable<Key> keyPress = 
    Observable.FromEvent<KeyEventArgs>(Application.Current.RootVisual, "KeyUp")
        .Select(ev => ev.EventArgs.Key);

したがって、イベント引数で任意のプロパティの値を設定できるはずです。

ここで設計上の問題があることに注意してください。キャンセルは、通常のコンテキストではすでに注意が必要なものですが、キャンセル可能なイベントと非同期実行パスを混在させると、後でメンテナンスの悪夢に変わる可能性があります。ここでプロデューサー/コンシューマー パターンを使用し、それを一方向のコミュニケーションと考えてください。イベントに反応し、それを変更するべきではありません。変更する必要がある場合は、(Rx ユーティリティ メソッドを介して) フィルターを使用します。

于 2013-04-30T08:34:31.937 に答える