private async Task LoadJenkinsJobs() { try { if (SelectedJenkinsServer == null || SelectedView == null) { return; } lock (_loadingJobsBusyLock) { if (_loadingJobsBusy) { return; } _loadingJobsBusy = true; } string sourceUrl = SelectedJenkinsServer.Url; IEnumerable <JenkinsJob> refreshedJobs = await JenkinsDataLoader.GetJobsFromView(SelectedJenkinsServer, SelectedView); if (TryHandleNewJenkinsOverview(refreshedJobs, sourceUrl)) { JenkinsServersEnabled = true; UpdateJobLinkedStatus(); } LoadingFailed = false; } catch (Exception ex) { Logger.Log(ex); LoadingFailed = true; UIHelper.InvokeUI(() => Jobs.Clear()); _refreshTimer.Stop(); JenkinsServersEnabled = true; } finally { lock (_loadingJobsBusyLock) { _loadingJobsBusy = false; if (!LoadingFailed) { _refreshTimer.Interval = _forceRefresh ? 1 : _refreshInterval; _forceRefresh = false; _refreshTimer.Start(); } } } }
private async void RefreshViews(string preferredViewName) { try { if (SelectedJenkinsServer == null) { return; } JenkinsServersEnabled = false; JenkinsViews = await JenkinsDataLoader.GetViews(SelectedJenkinsServer); var preferredView = JenkinsViews.FirstOrDefault((v) => string.Equals(v.Name, preferredViewName)); SelectedView = preferredView ?? JenkinsViews.FirstOrDefault(); ForceReload(true); } catch (Exception ex) { Logger.Log(ex); } }