private async Task Search() { if (IsBusy) { return; } IsBusy = true; _searchInitialized = true; _observableResults.Clear(); Results = null; SelectedResult = null; await Novaroma.Helper.RunTask(async() => { await _engine.SearchInfo(SearchQuery) .ContinueWith(t => { t.Result.ToList() .ForEach(r => _observableResults.Add(new InfoSearchMediaViewModel <IInfoSearchResult>(_engine, _exceptionHandler, DialogService, r, _directory, _isParentDirectory))); Results = _observableResults; Application.Current.Dispatcher.Invoke(CommandManager.InvalidateRequerySuggested); if (_results.Any()) { SelectedResult = _results.First(); } }); }, _exceptionHandler); IsBusy = false; }