RX and CancelEventArg



RX是否有等效的CancelEventArg?我在存储库中更新了在保存之前激发的事件。我检索InvocationList并遍历每个EventHandler,以检查是否设置了取消标志来中止保存。我是RX的新手,观看了RX关于Observable vs Events的研讨会http://channel9.msdn.com/Series/Rx-Workshop/Rx-Workshop-Observables-versus-Events我想知道如何用Subject替换EventHandler,并知道其中一个订阅者是否取消了活动。

如果我不能将事件转换为Subject,是否有方法为EventHandler获取Observable,并在OnNext中从EventHandler调用获取对发送方和CancelEventArgs的访问权限?

带Observable。从event,您可以访问事件参数,例如:

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

因此,您应该能够在事件参数中设置任何属性的值。

请注意,这里有一个设计问题:在正常情况下,取消是您应该小心的事情,但混合可取消事件和异步执行路径可能会在以后变成维护噩梦。在这里使用生产者-消费者模式,并将其视为单向通信:你对事件做出反应,不应该更改它。如果你需要更改它,请使用过滤器(通过Rx实用程序方法)。

相关内容

  • 没有找到相关文章