protected virtual void OnBayChanged(DriveBayChangedEvent evt) { if (this.BayChanged != null) { this.BayChanged(this, evt); } }
protected virtual void Update() { List <DriveBay> bayStatuses = this.GetBayStatuses(); List <DriveBayChangedEvent> events = new List <DriveBayChangedEvent>(); lock (this.syncObject) { ListComparer <DriveBay> listComparer = new ListComparer <DriveBay>(); listComparer.Compare(this.bays, bayStatuses, new Func <DriveBay, DriveBay, bool>(DriveBay.CompareStatus)); listComparer.changedItems.ForEach(delegate(ListComparer <DriveBay> .ItemData d) { DriveBayChangedEvent driveBayChangedEvent = new DriveBayChangedEvent(); driveBayChangedEvent.oldBay = (DriveBay)d.oldItem.Clone(); d.oldItem.Power = d.newItem.Power; d.oldItem.Present = d.newItem.Present; driveBayChangedEvent.bay = d.oldItem; events.Add(driveBayChangedEvent); }); foreach (DriveBayChangedEvent evt in events) { this.OnBayChanged(evt); } } }