Package Rx-Main, Rx-WPF( bring in System.Reactive.Windows.Threading)
Scheduler.Immediate(immediate sync no queue run) .CurrentThread (Queued, single threaded), .NewThread(many thread), DispatcherSheduler,
new EventLoopScheduler() (a separate thread as Message Pump, not static property as above)
Thread/TaskPoolScheduler=TaskScheduler.Default (Two background Thread, all other are foreground)
SubscribeOn/ObserveOn(scheduler.NewThread)--SubOn ignore NewThread or ThreadPool just pick one,ObseOn multi and in order.
WPF/WF SubscribeOn to compute, ObserveOn to update
Setup
var q = from t in Enumerable.Range(1, 100) select t;
//Queryable -- need observer
var qab = q.AsQueryable(); //System.Linq.IQueryable
qab.Subscribe(Observer.Create(F), Scheduler.Immediate);
//Observable
var obs=q.ToObservable(Scheduler.ThreadPool); //System.IObservable.
obs.ObserveOn(DispatcherSynchronizationContext.Current).Subscribe(F); // SyncCtx obsolete
Observable.Interval(TimeSpan.FromSeconds(1)).Subscribe(i=>F((int)i));
// ObservableExtensions in Core.dll, DispatcherScheduler in Rx-Wpf System.Reactive.Windows.Threading
obs.ObserveOn(DispatcherScheduler.Current).Subscribe(F);
Observable.Using(()=>new StreamReader(""), sr => sr.ReadToEnd().ToObservable());// using need input IDis
Observable.Using(() => Disposable.Empty, d => Observable.Range(1, 100)); //fool using by Empty
.Finally(()=>{manualresetevent.Set()}; //block to join bg threadpool. .Catch .Timer .TimeStamp .Timeout need Catch, .Throttle=Buffer
.Scan=Aggregate but running finite .Buffer vs. .Window= List vs.IObs .Do .Count() is obs
Observable.Create(obsr => { obsr.OnNext(1); obsr.OnCompleted(); return () => { }; }); //Disposable.Empty
Observable.Generate(init,state=>CanContinue,MoveNext,Getresult,ThreadPool,
.Publish .Connect .RefCount() hot-cold-auto cleanup.
.FromEventPatten(=>Ink,prop.Changed+=h,Changed=-h).Where(..)
Observable.FromAsyncPattern(sm.BeginRead, sm.EndRead); obsolete use await task
Rx Hot/Cold obs--- Interval is cold since each sub see different, But if Obs.publish then all sub
next Obs.connect will have all Subs see same data => hot
Saturday, March 12, 2016
Rx Rundown
Subscribe to:
Post Comments (Atom)
No comments:
Post a Comment