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.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>());
}
}