public void Start(bool initialStart) { var ciEntryPointSettings = _settings.CiEntryPointSettings .Where(s => !string.IsNullOrEmpty(s.Url)) .ToList(); _watchers.Clear(); foreach (var ciEntryPointSetting in ciEntryPointSettings) { WatcherBase watcher = ciEntryPointSetting.GetWatcher(_settings); _watchers.Add(watcher); watcher.StatusChecked += BuildWatcherStatusChecked; watcher.StoppedWatching += StoppedWatching; watcher.ServerUnavailable += BuildWatcherServerUnavailable; watcher.InvalidCredentials += InvalidCredentials; watcher.BuildDefinitionNotFound += BuildDefinitionNotFound; watcher.Settings = _settings; watcher.CiEntryPointSetting = ciEntryPointSetting; // todo: It looks like we are overwriting preceding watcher threads with subsequent ones which will cause problems when we try to Stop() them _watcherThread = new Thread(watcher.StartWatching) { IsBackground = true, Name = "CiWatcher" }; _watcherThread.Start(); } if (ciEntryPointSettings.Any()) { if (initialStart) { InvokeUpdateStatusBar("Attempting to connect to server"); SetStatusUnknown(); } _timer.Start(); } else { InvokeUpdateStatusBar(""); InvokeRefreshStatus(Enumerable.Empty <BuildStatus>()); } }
public void Start(bool initialStart) { var ciEntryPointSettings = _settings.CiEntryPointSettings .Where(s => !string.IsNullOrEmpty(s.Url)) .ToList(); _watchers.Clear(); foreach (var ciEntryPointSetting in ciEntryPointSettings) { WatcherBase watcher = ciEntryPointSetting.GetWatcher(_settings); _watchers.Add(watcher); watcher.StatusChecked += BuildWatcherStatusChecked; watcher.ServerUnavailable += BuildWatcherServerUnavailable; watcher.BuildDefinitionNotFound += BuildDefinitionNotFound; watcher.Settings = _settings; watcher.CiEntryPointSetting = ciEntryPointSetting; _watcherThread = new Thread(watcher.StartWatching) { IsBackground = true, Name = "CiWatcher" }; _watcherThread.Start(); } if (ciEntryPointSettings.Any()) { if (initialStart) { InvokeUpdateStatusBar("Attempting to connect to server"); SetStatusUnknown(); } _timer.Start(); } else { InvokeUpdateStatusBar(""); InvokeRefreshStatus(Enumerable.Empty <BuildStatus>()); } }