public void CheckForChanges() { try { Log.Debug("Checking for changes"); var buildStates = _tfsClient.GetLatestBuildStates(); Log.InfoFormat("Found {0} build states", buildStates.Count); foreach (var buildState in buildStates.Where(BuildIsDone)) { string previousBuild; _latestBuilds.TryGetValue(buildState.Name, out previousBuild); if (!string.Equals(buildState.Uri, previousBuild) && buildState.FinishTime > DateTime.Now.AddMinutes(-15)) { Log.DebugFormat("Notifying:\n {0}", buildState); _changeNotifier.Notify(buildState); } _latestBuilds[buildState.Name] = buildState.Uri; } } catch (Exception e) { Log.Error("Error while checking for changes", e); } }