コード例 #1
0
        /// <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);
                }
            }
        }
コード例 #2
0
 /// <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);
             }
         }
     }
 }