Streaming Data from Database with C# with Example
Observable Assume having a method returning IEnumerable, f.e. private IEnumerable GetData() { try { // return results from database } catch(Exception exception) { throw; } } Creates an Observable and starts a method asynchronously. SelectMany flattens the collection and the subscription is fired every 200 elements through Buffer. int bufferSize = 200; Observable .Start(() => GetData()) .SelectMany(s => s) .Buffer(bufferSize) .ObserveOn(SynchronizationContext.Current) .Subscribe(items => { Console.WriteLine("Loaded {0} elements", items.Count); // do something on the UI like incrementing a ProgressBar }, () => Console.WriteLine("Completed loading"));