diff --git a/ReactiveExample/README.md b/ReactiveExample/README.md index bd8f760df..fb9b8dcf0 100644 --- a/ReactiveExample/README.md +++ b/ReactiveExample/README.md @@ -2,6 +2,19 @@ This is a sample app that shows how to use `System.Reactive` and `ReactiveUI` wi +### Scheduling + +In order to use reactive extensions scheduling, copy-paste the `TerminalScheduler.cs` file into your project, and add the following lines to the composition root of your `Terminal.Gui` application: + +```cs +Application.Init (); +RxApp.MainThreadScheduler = TerminalScheduler.Default; +RxApp.TaskpoolScheduler = TaskPoolScheduler.Default; +Application.Run (new RootView (new RootViewModel ())); +``` + +From now on, you can use `.ObserveOn(RxApp.MainThreadScheduler)` to return to the main loop from a background thread. This is useful when you have a `IObservable` updated from a background thread, and you wish to update the UI with `TValue`s received from that observable. + ### Data Bindings If you wish to implement `OneWay` data binding, then use the `WhenAnyValue` [ReactiveUI extension method](https://www.reactiveui.net/docs/handbook/when-any/) that listens to `INotifyPropertyChanged` events of the specified property, and converts that events into `IObservable`: