Observable.Interval(TimeSpan.FromSeconds(5))
.Timeout(dueTime: DateTimeOffset.UtcNow,
other: Observable.Return<long>(-1))
.Subscribe(Console.WriteLine);
上面的代码片段会在超时时返回-1。但是,我需要一些允许我映射序列的东西,比如select运算符。
我想我需要像
这样的东西.Timeout(DateTimeOffset dueTime, Func<IObservable<TSource>,Func<TSource, TResult> selector)
所以我做这样的事情
Observable.Interval(TimeSpan.FromSeconds(5))
.Timeout<long, string>(dueTime: DateTimeOffset.UtcNow,
other: i=> Observable.Return<string>(i * i.ToString()))
.Subscribe(Console.WriteLine);
有人可以开导我吗?感谢。
答案 0 :(得分:1)
怎么样:
Observable.Interval(TimeSpan.FromSeconds(5))
.SelectMany(x => DoWork().Timeout(...))
.Subscribe(Console.WriteLine);
您可以将DoWork实现为:
IObservable<Unit> DoWork()
{
return Observable.Start(() => Thread.Sleep(1000));
}