private void InitObservers() { var deletedRows = new ConcurrentObservableCollection<ApplicationViewModel>(); deletedRows.ToObservableRx<ApplicationViewModel>().ObserveOnDispatcher().Subscribe((appVm) => { ApplicationQueue.Remove(appVm); }); _deleteAppObserver = Observer.Create<ApplicationViewModel>((item) => { var model = item.GetModel(); if (item.State != AppState.ToDelete) { return; } item.State = AppState.Deleting; try { _applicationManager.DeleteApp(model); deletedRows.Add(item); } catch (Exception ex) { item.State = AppState.DeleteError; item.ErrorMsg = ex.ToString(); } }); this.ObserveProperty("SearchText") .Throttle(TimeSpan.FromMilliseconds(500)) .Select(args => SearchText) .DistinctUntilChanged() .ObserveOnDispatcher() .Subscribe(Observer.Create((string text) => UpdateAppList())); }