private void ReceiveBuild(BuildModel build) { if (Projects==null) { lock (_projectLoadLock) { if (Projects == null) { var m = PollingMonitor as TeamCityBuildMonitor; Projects = new ObservableCollection<BuildProjectModel>(m.GetAllBuildProjects()); } } } var ex = build.BuildType.Builds.Where(b => b.Id == build.Id).FirstOrDefault(); if (ex == null) { build.BuildType.Builds.Add(build); } else { var reAdd = ex.IsRunning && !build.IsRunning; // update the one we've got... ex.CurrentStage = build.CurrentStage; ex.ElapsedRunTime = build.ElapsedRunTime; ex.EstimatedRunTime = build.EstimatedRunTime; ex.Finished = build.Finished; ex.History = build.History; ex.IsRunning = build.IsRunning; ex.Number = build.Number; ex.OutDated = build.OutDated; ex.PercentageComplete = build.PercentageComplete; ex.Personal = build.Personal; ex.Pinned = build.Pinned; ex.ProbablyHanging = build.ProbablyHanging; ex.Started = build.Started; ex.Status = build.Status; ex.StatusText = build.StatusText; if (reAdd) { ex.BuildType.Builds.Remove(ex); ex.BuildType.Builds.Add(ex); } } build.BuildType.RefreshLatest(); }
protected virtual void OnBuildUpdated(BuildModel build) { EventHandler<BuildEventArgs> eh = BuildUpdated; if (eh != null) eh(this, new BuildEventArgs(build)); }
public BuildEventArgs(BuildModel build) { Build = build; }