private static void Delegating() { // Get seconds to delay int delaySeconds = GetDelay(); if (delaySeconds == 0) return; var delay = TimeSpan.FromSeconds(delaySeconds); // Get ints to observe int[] ints = GetInts(); Console.WriteLine("\n\nEven numbers:"); // Create observer and observable IObservable<int> observable = new ObservableEvens(ints); // Observe even ints //var observer = new EvensObserver(delaySeconds); observable.Subscribe(value => { // Add delay if item is multiple of 4 if (value % 4 == 0) Program.Delay(delay); // Print value Console.WriteLine(value); }, () => Console.WriteLine("Done")); }
/// <summary> /// Demonstrates standard observer pattern. /// </summary> /// <param name="async">True for async callbacks</param> private static void Observe(bool async) { // Get seconds to delay int delaySeconds = GetDelay(); if (delaySeconds == 0) return; // Get ints to observe int[] ints = GetInts(); // Create observable and observer IObservable<int> observable = new ObservableEvens(ints, async); IObserver<int> observer = new EvensObserver(delaySeconds); // Observe even ints Console.WriteLine("\n\nEven numbers:"); observable.Subscribe(observer); }