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); } }
/// <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}"); } } }
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}"); } } }
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); } }