Beispiel #1
0
 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));
 }
Beispiel #2
0
 public static IObservable <long> Interval(TimeSpan period)
 {
     return(Observable.Generate(
                0l,
                i => true,
                i => i + 1,
                i => i,
                i => period));
 }
Beispiel #3
0
 public static IObservable <long> Timer(TimeSpan dueTime)
 {
     return(Observable.Generate(
                0l,
                i => i < 1,
                i => i + 1,
                i => i,
                i => dueTime));
 }
Beispiel #4
0
        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));
        }
Beispiel #5
0
        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));
        }
Beispiel #6
0
        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();
        }
Beispiel #8
0
        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"); });
        }
Beispiel #9
0
        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();
            }
        }
Beispiel #10
0
        //这里是实现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);
        }