public static IObservable <long> Timer(TimeSpan dueTime, TimeSpan period) { return(Observable.Generate( 0l, i => true, i => i + 1, i => i, i => i == 0 ? dueTime : period)); }
public static IObservable <long> Interval(TimeSpan period) { return(Observable.Generate( 0l, i => true, i => i + 1, i => i, i => period)); }
public static IObservable <long> Timer(TimeSpan dueTime) { return(Observable.Generate( 0l, i => i < 1, i => i + 1, i => i, i => dueTime)); }
private static async Task Sample3() { var o1 = Observable.Generate(0, i => i < 9, i => ++ i, i => Thread.CurrentThread.ManagedThreadId, _ => TimeSpan.FromSeconds(1)); var o2 = Observable.Generate(0, i => i < 9, i => ++ i, i => Thread.CurrentThread.ManagedThreadId); var result = o1.Zip(o2, (first, second) => string.Format("o1 Running in {0}.\no2 Running in {1}\n.", first, second)); await result.ForEachAsync(r => Console.WriteLine(r)); }
public static IObservable <int> Range(int start, int count) { var max = start + count; return(Observable.Generate( start, value => value < max, value => value + 1, value => value)); }
public static void UsingGenerate() { var range = Observable.Generate(0, x => x < 10, x => x + 1, x => x); range.Subscribe(Console.Write); Console.WriteLine(); range.Subscribe(Console.Write); Console.WriteLine(); //同样的效果 Observable.Range(1, 10).Subscribe(Console.Write); }
public static void TimerDesignTest() { var observable = Observable.Generate ( 0, x => { Console.WriteLine($"condition:{x < 10}"); return(x < 3); }, x => { Console.WriteLine($"iterate:"); return(x + 1); }, x => $"rs {x}", x => { Console.WriteLine($"duetime"); return(TimeSpan.FromMilliseconds(500)); } ); observable.SubscribeX(); }
static void IObservableSelectManyTest() { var sequence = Observable.Interval(TimeSpan.FromMilliseconds(2000)); sequence.Select(i => Convert.ToInt32(i)) //.SelectMany(val => { return Observable.Range(val,3); }) .SelectMany(val => { var max = val + 2; var origin = val; return(Observable.Generate(0, i => i < 3, i => i + 1, i => origin * 10 + i)); }) .Subscribe(v => Console.WriteLine(v), ex => { }, () => { Console.WriteLine("Completed"); }); }
private static void Sample1() { IObservable <int> source; //source= Observable.Empty<int>(); //source = Observable.Throw<int>(new Exception("Oops")); //source = Observable.Return(42); //source = Observable.Range(5, 3); //source = Observable.Generate(0, i => i < 5, i => i + 1, i => i * i); source = Observable.Generate(0, i => i < 5, i => i + 1, i => i * i, i => TimeSpan.FromSeconds(i)); using (source.Subscribe( x => Console.WriteLine("OnNext: {0}", x), ex => Console.WriteLine("OnError: {0}", ex.Message), () => Console.WriteLine("OnCompleted"))) { Console.WriteLine("Press ENTER to unsubscribe..."); Console.ReadLine(); } }
//这里是实现Timer的一种方式 public static void Timer(TimeSpan dueTime) { var observable = Observable.Generate ( 0, x => { Console.WriteLine($"condition:{x<10}"); return(x < 10); }, x => { Console.WriteLine($"iterate:"); return(x + 1); }, x => $"rs {x}", x => { Console.WriteLine($"duetime"); return(TimeSpan.FromMilliseconds(500)); } ); observable.SubscribeX(); //return Observable.Generate( //0, //i => i < 1, //i => i + 1, //i => i, //i => dueTime); }