C# Language Diffusion de données à partir d'une base de données avec Observable


Exemple

Supposons qu'une méthode retourne IEnumerable<T> , fe

private IEnumerable<T> GetData()
{
    try 
    {
        // return results from database 
    }
    catch(Exception exception)
    {
        throw;
    }
}  

Crée une observable et démarre une méthode de manière asynchrone. SelectMany aplatit la collection et l'abonnement est déclenché tous les 200 éléments via 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"));