我有一个IEnumerable集合,并希望在一秒钟内将项目泵入另一个集合。我该如何实现这一目标?有很多新的扩展方法。我还没有在哪里使用。
答案 0 :(得分:4)
list1.ToObservable() // Convert list1 to Observable
.Zip(
Observable.Interval(TimeSpan.FromSeconds(1)), // Zip it with an observable that ticks every second
(list, timerList) => list // select list1 only
).
Subscribe((item) =>
{
list2.Add(item); // on each tick, add an item to list2
});
答案 1 :(得分:0)
这是你可以做到的一种方式。我不是说它是最“Rx”的方式,请注意(我对Rx的体验仍然有限)。
public static IEnumerable<T> Delay(this IEnumerable<T> source, int interval)
{
foreach (T item in source)
{
Thread.Sleep(interval);
yield return item;
}
}
然后:
var source = firstCollection.Delay(1000).ToObservable();
source.Subscribe(x => secondCollection.Add(x));