private async Task ExecuteQueryAsync(string token) { try { IsRunning = true; Clean(); ((StatusBarItemContextCancellableCommand)_progessBarStatusBarItem.DataContext).IsCancellable = true; var query = string.IsNullOrEmpty(SelectedText) ? Content.Text : SelectedText; _queryResult = await _dbService.ExecuteQueryAsync(Connection, Collection, query, this, token, _cancellationToken.Token).ConfigureAwait(false); ((StatusBarItemContextCancellableCommand)_progessBarStatusBarItem.DataContext).IsCancellable = false; ContinuationToken = _queryResult.ResponseContinuation; RequestCharge = $"Request Charge: {_queryResult.RequestCharge:N2}"; QueryInformation = $"Returned {_queryResult.Count:N0} document(s)." + (ContinuationToken != null ? " (more results available)" : string.Empty); if (_queryResult.QueryMetrics != null) { QueryMetrics = new Dictionary <string, QueryMetrics> { { "All", _queryResult.QueryMetrics.Select(q => q.Value).Aggregate((i, next) => i + next) } }; foreach (var metric in _queryResult.QueryMetrics.OrderBy(q => int.Parse(q.Key))) { QueryMetrics.Add(metric.Key, metric.Value); } } else { QueryMetrics = null; } EditorViewModel.SetText(_queryResult, HideSystemProperties); HeaderViewModel.SetText(_queryResult.ResponseHeaders, HideSystemProperties); } catch (OperationCanceledException) { Clean(); } catch (DocumentClientException clientEx) { Clean(); await _dialogService.ShowError(clientEx.Parse(), "Error", "ok", null).ConfigureAwait(false); } catch (Exception ex) { Clean(); await _dialogService.ShowError(ex, "Error", "ok", null).ConfigureAwait(false); } finally { IsRunning = false; } }