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;
        }