Ejemplo n.º 1
0
 private Boolean TryAdd(ITriggerExecute trigger)
 {
     lock (m_lock)
     {
         try
         {
             String id = trigger.GetId();
             if (String.IsNullOrWhiteSpace(id))
             {
                 return(false);
             }
             if (m_ids.Contains(id))
             {
                 TriggerStack.PushExiested(trigger);
                 return(false);
             }
             m_ids.Add(id);
             return(true);
         }
         catch (Exception e)
         {
             LogHelper.Error("执行定时任务的TryAdd报错,请查证.错误代码" + e.Message);
         }
         return(false);
     }
 }
Ejemplo n.º 2
0
 public static void PushExiested(ITriggerExecute trigger)
 {
     lock (m_lock)
     {
         m_list.Enqueue(trigger);
     }
 }
Ejemplo n.º 3
0
 /// <summary>
 /// 如果Id已存在,那么不会插入
 /// </summary>
 /// <param name="trigger"></param>
 public static void Push(ITriggerExecute trigger)
 {
     lock (m_lock)
     {
         try
         {
             String id = trigger.GetId();
             if (!String.IsNullOrWhiteSpace(id))
             {
                 if (!m_ids.Contains(id))
                 {
                     m_list.Enqueue(trigger);
                     m_ids.Add(id);
                 }
             }
         }catch (Exception e)
         {
             LogHelper.Warn($"插入触发器报错,报错数据为{e.Message}");
         }
     }
 }
Ejemplo n.º 4
0
 public static void Remove(ITriggerExecute item)
 {
     lock (m_lock)
     {
         try
         {
             String id = item.GetId();
             if (String.IsNullOrWhiteSpace(id))
             {
                 return;
             }
             if (m_ids.Contains(id))
             {
                 m_ids.Remove(id);
             }
         }
         catch (Exception e)
         {
             LogHelper.Warn($"插入触发器报错,报错数据为{e.Message}");
         }
     }
 }
Ejemplo n.º 5
0
 private void ExecuteTrigger(ITriggerExecute trigger)
 {
     try
     {
         if (!trigger.Execute(m_provider))
         {
             TriggerStack.PushExiested(trigger);
         }
         else
         {
             TriggerStack.Remove(trigger);
         }
     }
     catch (Exception)
     {
         TriggerStack.PushExiested(trigger);
     }
     finally
     {
         String id = trigger.GetId();
         Remove(id);
     }
 }