Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1),...
Transcript of Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1),...
![Page 1: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/1.jpg)
![Page 2: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/2.jpg)
![Page 3: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/3.jpg)
Krzysztof Owsiany
GemuStudio → Alfavox
godev.gemustudio.com
![Page 4: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/4.jpg)
Reactive Extensions - wzorzec obserwatora, czyli programowanie reaktywne.
![Page 5: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/5.jpg)
![Page 6: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/6.jpg)
Programowanie reaktywne
![Page 7: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/7.jpg)
![Page 8: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/8.jpg)
Reactive Extensions
![Page 9: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/9.jpg)
![Page 10: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/10.jpg)
![Page 11: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/11.jpg)
Observable.Kreator/Generator(lambda)
.Filter1(lambda)
.Modyfikator1(lambda)
.Selektor1(lambda)
.Modyfikator2(lambda)
.Filter2(lambda)
.Selektor2(lambda)
.Subscribe(OnNext, OnError, OnClompleted
);
![Page 12: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/12.jpg)
var stream = Observable.Interval(TimeSpan.FromSeconds(1));
var subscribent = stream.Subscribe(
tick => Debug.WriteLine(tick));
![Page 13: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/13.jpg)
var stream = Observable.Interval (
TimeSpan.FromSeconds(1),NewThreadScheduler.Default
).Timestamp();
var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher).Subscribe(
tick => Label1.Content = tick);
![Page 14: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/14.jpg)
var stream = Observable.FromEventPattern<TextChangedEventHandler,
TextChangedEventArgs>(@event => TextBox1.TextChanged += @event,@event => TextBox1.TextChanged -= @event
).Select(x => x.Sender).OfType<TextBox>().Select(
textBox => textBox.Text);
![Page 15: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/15.jpg)
Observable.FromEventPattern<RoutedEventHandler,RoutedEventArgs>(
@event => ExitButton.Click += @event,@event => ExitButton.Click -= @event
).Subscribe(
eventArgs => Action());
![Page 16: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/16.jpg)
var stream = Observable.FromEventPattern<TextChangedEventHandler,
TextChangedEventArgs>(@event => TextBox1.TextChanged += @event,@event => TextBox1.TextChanged -= @event
).Select(x => x.Sender).OfType<TextBox>().Select(textBox => textBox.Text);
var subscribent = stream.Where(text =>
text.ToLower().Equals("fibonacci")).Subscribe(
text => Action());
![Page 17: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/17.jpg)
public class EventObservable : IObservable<IEvent>{
private IList<IObserver<IEvent>> _subscribents;
public EventObservable(){_subscribents = new List<IObserver<IEvent>>();
}
public void Push(IEvent eventType){foreach (var subscribent in _subscribents){
subscribent.OnNext(eventType);}
}
public IDisposable Subscribe(IObserver<IEvent> observer){if (!_subscribents.Contains(observer)){
_subscribents.Add(observer);}
return new Unsubscribe<IEvent>(observer, _subscribents);}
}
![Page 18: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/18.jpg)
public class Unsubscribe<T> : IDisposable{
private readonly IObserver<T> _observer;private readonly IList<IObserver<T>> _subscribents;
public Unsubscribe(IObserver<T> observer, IList<IObserver<T>> subscribents)
{_observer = observer;_subscribents = subscribents;
}
public void Dispose(){
_subscribents.Remove(_observer);}
}
![Page 19: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/19.jpg)
public class ExitObserver : IObserver<ApplicationExitedEvent>{
public void OnNext(ApplicationExitedEvent applicationExitedEvent)
{Debug.WriteLine("Observer: ExitObserver");
Environment.Exit(applicationExitedEvent.ExitCode);}
public void OnCompleted() { }
public void OnError(Exception error) { }}
![Page 20: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/20.jpg)
![Page 21: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/21.jpg)
CQRS/ESGUI – obsługa kontrolekZdarzenia w domenieKlient-SerwerNasłuch urządzeń peryferyjnychModel Aktorów
![Page 22: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/22.jpg)
reactivex.ioreactivemanifesto.orgrxmarbles.comintrotorx.comrxwiki.wikidot.com/101samplesgodev.gemustudio.com
github.com/Reactive-Extensions/Rx.NETgithub.com/godevblog/30DayChallengegithub.com/krzysztofowsiany/rxexamples
![Page 23: Krzysztof Owsiany - MrDevvar stream = Observable.Interval ( TimeSpan.FromSeconds(1), NewThreadScheduler.Default Timestamp(); var subscribent = stream.ObserveOn(Dispatcher.CurrentDispatcher](https://reader035.fdocument.pub/reader035/viewer/2022071410/6103cdfd52d239763814d677/html5/thumbnails/23.jpg)
Krzysztof Owsiany
Twitter: @k_owsiany
Blog: mrdev.pl
Snapchat: gocom7