Следующий код задерживает результаты на 2 секунды. Я хочу немедленно вернуть результаты, но запускать новую наблюдаемую каждые 2 секунды. Что мне не хватает?
ВЫХОДЫ:
**The current output is:**
05: 1. Run
07 Result: 1
07: 2. Run
09 Result: 2
09: 3. Run
11 Result: 3
**Desired output is:**
05: 1. Run
05 Result: 1
07: 2. Run
07 Result: 2
09: 3. Run
09 Result: 3
КОД:
var sources = Enumerable.Range(1, 8).Select(i =>
{
Console.WriteLine("{0}: {1}. Run", DateTimeOffset.Now.ToString("ss"), i);
return Observable.Return(i, CurrentThreadScheduler.Instance);
});
Observable.Generate(sources.GetEnumerator(), e => e.MoveNext(), e => e, e => e.Current, e => TimeSpan.FromMilliseconds(2000), ThreadPoolScheduler.Instance)
.Merge()
.Timestamp()
.Do(r =>
{
Console.WriteLine("{0} Result: {1}{2}", r.Timestamp.ToString("ss"), r.Value, Environment.NewLine);
},
ex =>
{
Console.WriteLine(ex.ToString());
},
() =>
{
Console.WriteLine("Completed");
})
.Subscribe();
IEnumerable<IObservable>
дляsources
, как это похоже наIEnumerable<>
. Также неясно, должен лиsources
содержать данные, указывающие желаемые интервалы. - person James World   schedule 17.11.2014