internal async Task Refresh(List <GitFile> files) { var updatedFiles = files; if (!_refreshing) { if (_showOnlySolutionFiles) { var filteredFiles = new List <GitFile>(); foreach (var gitFile in files) { if (service.FileTracked(gitFile.FilePath)) { filteredFiles.Add(gitFile); } } updatedFiles = filteredFiles; } _refreshing = true; await ThreadHelper.JoinableTaskFactory.RunAsync( VsTaskRunContext.UIThreadBackgroundPriority, async delegate { await ThreadHelper.JoinableTaskFactory.SwitchToMainThreadAsync(); await Task.Yield(); await RefreshInternal(updatedFiles); }); _refreshing = false; } }