diff --git a/Part 1 - Getting Started/1. Why Rx.md b/Part 1 - Getting Started/1. Why Rx.md index 2cfb36f..29d8ec2 100644 --- a/Part 1 - Getting Started/1. Why Rx.md +++ b/Part 1 - Getting Started/1. Why Rx.md @@ -68,41 +68,41 @@ Adopting and learning Rx can be an iterative approach where you can slowly apply ```C# public class MemberSearchViewModel : INotifyPropertyChanged { - //Fields removed... - public MemberSearchViewModel(IMemberSearchModel memberSearchModel, - ISchedulerProvider schedulerProvider) - { - _memberSearchModel = memberSearchModel; - //Run search when SearchText property changes - this.PropertyChanges(vm => vm.SearchText) - .Subscribe(Search); - } - //Assume INotifyPropertyChanged implementations of properties... - public string SearchText { get; set; } - public bool IsSearching { get; set; } - public string Error { get; set; } - public ObservableCollection Results { get; } - //Search on background thread and return result on dispatcher. - private void Search(string searchText) - { - using (_currentSearch) { } - IsSearching = true; - Results.Clear(); - Error = null; - _currentSearch = _memberSearchModel.SearchMembers(searchText) - .Timeout(TimeSpan.FromSeconds(2)) - .SubscribeOn(_schedulerProvider.TaskPool) - .ObserveOn(_schedulerProvider.Dispatcher) - .Subscribe( - Results.Add, - ex => + //Fields removed... + public MemberSearchViewModel(IMemberSearchModel memberSearchModel, + ISchedulerProvider schedulerProvider) { - IsSearching = false; - Error = ex.Message; - }, - () => { IsSearching = false; }); - } - ... + _memberSearchModel = memberSearchModel; + //Run search when SearchText property changes + this.PropertyChanges(vm => vm.SearchText) + .Subscribe(Search); + } + //Assume INotifyPropertyChanged implementations of properties... + public string SearchText { get; set; } + public bool IsSearching { get; set; } + public string Error { get; set; } + public ObservableCollection Results { get; } + //Search on background thread and return result on dispatcher. + private void Search(string searchText) + { + using (_currentSearch) { } + IsSearching = true; + Results.Clear(); + Error = null; + _currentSearch = _memberSearchModel.SearchMembers(searchText) + .Timeout(TimeSpan.FromSeconds(2)) + .SubscribeOn(_schedulerProvider.TaskPool) + .ObserveOn(_schedulerProvider.Dispatcher) + .Subscribe( + Results.Add, + ex => + { + IsSearching = false; + Error = ex.Message; + }, + () => { IsSearching = false; }); + } + ... } ```