C# Language
Reaktive Erweiterungen (Rx)
Suche…
Beobachten des TextChanged-Ereignisses in einer TextBox
Ein Observable wird aus dem TextChanged-Ereignis der TextBox erstellt. Außerdem wird eine Eingabe nur ausgewählt, wenn sie sich von der letzten Eingabe unterscheidet und wenn innerhalb von 0,5 Sekunden keine Eingabe erfolgt. Die Ausgabe in diesem Beispiel wird an die Konsole gesendet.
Observable
.FromEventPattern(textBoxInput, "TextChanged")
.Select(s => ((TextBox) s.Sender).Text)
.Throttle(TimeSpan.FromSeconds(0.5))
.DistinctUntilChanged()
.Subscribe(text => Console.WriteLine(text));
Streaming von Daten aus der Datenbank mit Observable
Angenommen, eine Methode gibt IEnumerable<T>
, z
private IEnumerable<T> GetData()
{
try
{
// return results from database
}
catch(Exception exception)
{
throw;
}
}
Erzeugt ein Observable und startet asynchron eine Methode. SelectMany
die Sammlung und das Abonnement wird alle 200 Elemente über Buffer
SelectMany
.
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
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow