如何观察特定的事件组合?

时间:2014-08-13 20:42:21

标签: c# .net events system.reactive reactive-programming

我有多个用Rx FromEventPattern制作的可观察量,例如:

var a = Observable.FromEventPattern(...); // event A
var b = Observable.FromEventPattern(...); // event B
var c = Observable.FromEventPattern(...); // event C

如何观察这些事件的特定序列?

。例如,我想观察A然后C发生的情况,但是在特定的有限时间范围内没有B。

或者:ABC然后是ABC然后只是B。

1 个答案:

答案 0 :(得分:2)

这对你有用吗?

var query = a.Select(_ => c.TakeUntil(b)).Switch();

这会在5秒钟内发挥作用吗?

var query = a
    .Select(_ => c
        .TakeUntil(b)
        .TakeUntil(Observable.Timer(TimeSpan.FromSeconds(5.0))))
    .Switch();

否则您需要查看WindowJoin运营商。