0
Observable.Interval(TimeSpan.FromSeconds(5))
.Timeout(dueTime: DateTimeOffset.UtcNow,
 other: Observable.Return<long>(-1))
.Subscribe(Console.WriteLine);

上記のコード スニペットは、タイムアウトになると -1 を返します。ただし、選択演算子のように、シーケンスをマップできるものが必要です。

のようなものが必要だと思います

.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);

誰かがこれについて私に教えてもらえますか? ありがとう。

4

1 に答える 1

1

どうですか:

Observable.Interval(TimeSpan.FromSeconds(5))
    .SelectMany(x => DoWork().Timeout(...))
    .Subscribe(Console.WriteLine);

DoWork を次のように実装できます。

IObservable<Unit> DoWork()
{
    return Observable.Start(() => Thread.Sleep(1000));
}
于 2013-06-10T02:44:55.217 に答える