/// <summary> /// 消除报警 /// </summary> /// <param name="sender"></param> /// <param name="info"></param> public void RemoveAlarm(IAlarmSenderable sender, AlarmInfo info) { if (this.alarmDic.ContainsKey(string.Format("{0}:{1}", sender.ToString(), info.Message))) { Tuple <IAlarmSenderable, AlarmInfo> tuple; this.alarmDic.TryRemove(string.Format("{0}:{1}", sender.ToString(), info.Message), out tuple); if (info.HandleType == AlarmHandleType.AutoAndImmeDiateHandle) { AlarmInfo alarmInfo; this.AutoImmediateAlarmDic.TryRemove(info.Message, out alarmInfo); } if (info.HandleType == AlarmHandleType.AutoAndDelayHandle) { AlarmInfo alarmInfo; this.AutoDelayAlarmDic.TryRemove(info.Message, out alarmInfo); } } }
/// <summary> /// 丢出可消除的报警(如轴状态、报警信号) /// </summary> /// <param name="sender"></param> /// <param name="info"></param> private void FireAndAutoHandle(IAlarmSenderable sender, AlarmInfo info) { if (this.alarmDic.ContainsKey(string.Format("{0}:{1}", sender.ToString(), info.Message))) { return; } else { if (this.alarmDic.TryAdd(string.Format("{0}:{1}", sender.ToString(), info.Message), new Tuple <IAlarmSenderable, AlarmInfo>(sender, info))) { this.alarmEventQueue.Enqueue(AlarmEvent.Create(sender, info)); if (info.HandleType == AlarmHandleType.AutoAndImmeDiateHandle) { this.AutoImmediateAlarmDic.TryAdd(info.Message, info); } if (info.HandleType == AlarmHandleType.AutoAndDelayHandle) { this.AutoDelayAlarmDic.TryAdd(info.Message, info); } } } }