C# Language
Reactive Extensions (Rx)
Ricerca…
Osservazione dell'evento TextChanged su un controllo TextBox
Un osservabile viene creato dall'evento TextChanged del TextBox. Inoltre, qualsiasi input viene selezionato solo se è diverso dall'ultimo input e se non vi è stato input entro 0,5 secondi. L'output in questo esempio viene inviato alla console.
Observable
.FromEventPattern(textBoxInput, "TextChanged")
.Select(s => ((TextBox) s.Sender).Text)
.Throttle(TimeSpan.FromSeconds(0.5))
.DistinctUntilChanged()
.Subscribe(text => Console.WriteLine(text));
Streaming dei dati dal database con Observable
Si supponga di avere un metodo che restituisce IEnumerable<T>
, fe
private IEnumerable<T> GetData()
{
try
{
// return results from database
}
catch(Exception exception)
{
throw;
}
}
Crea un Osservabile e avvia un metodo in modo asincrono. SelectMany
appiattisce la raccolta e l'abbonamento viene attivato ogni 200 elementi tramite 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"));
Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow