private void GetNames(object commandArg) { Observable.FromAsyncPattern <IList <string> >(_dataService.BeginGetNames, _dataService.EndGetNames)() .ObserveOnDispatcher() .Subscribe( result => { Names = new ObservableCollection <string>(result); }, ex => MessageBox.Show(ex.Message), () => { if (Names != null && Names.Count > 0) { SelectedName = Names[0]; } // refresh commands CommandRegistry.RaiseCanExecuteChanged(); } ); }