使用Rx从事件值或超时侦听消息

时间:2013-09-19 17:33:31

标签: c# system.reactive

考虑以下情况:

Listening messages from event or timeout with Rx

我该如何处理?我想使用“Observable.Amb”(在“A”之后),但必须手动创建订阅,这可能会及时复杂化以停止或释放资源。

1 个答案:

答案 0 :(得分:1)

Amb确实是一个不错的选择:

var bSignal = bSource.Select(b => true).Take(1);
var timeoutSignal = Observable.Timer(TimeSpan.FromSeconds(2)).Select(t => false);
var resultSignal = Observable.Amb(bSignal, timeoutSignal);
var result = aSource.Select(a => resultSignal).Switch();