C# Language
Rozszerzenia reaktywne (Rx)
Szukaj…
Obserwowanie zdarzenia TextChanged w TextBox
Obserwowalne jest tworzone ze zdarzenia TextChanged obiektu TextBox. Każde wejście jest wybierane tylko wtedy, gdy różni się od ostatniego wejścia i jeśli nie było żadnego wejścia w ciągu 0,5 sekundy. Dane wyjściowe w tym przykładzie są wysyłane do konsoli.
Observable
.FromEventPattern(textBoxInput, "TextChanged")
.Select(s => ((TextBox) s.Sender).Text)
.Throttle(TimeSpan.FromSeconds(0.5))
.DistinctUntilChanged()
.Subscribe(text => Console.WriteLine(text));
Przesyłanie strumieniowe danych z bazy danych za pomocą Observable
Załóżmy, że mamy metodę zwracającą IEnumerable<T>
, np
private IEnumerable<T> GetData()
{
try
{
// return results from database
}
catch(Exception exception)
{
throw;
}
}
Tworzy obiekt Observable i uruchamia metodę asynchronicznie. SelectMany
spłaszcza kolekcję, a subskrypcja jest uruchamiana co 200 elementów przez 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
Licencjonowany na podstawie CC BY-SA 3.0
Nie związany z Stack Overflow