protected void UnHookTrigger(TriggerManager tm) { tm.Activate -= new EventHandler(tm_Activate); tm.Deactivate -= new EventHandler(tm_Deactivate); tm.Dispose(); }
private void RemoveTrigger(TriggerManager tm) { lock (Triggers) { if (Triggers.Contains(tm)) { Triggers.Remove(tm); UnHookTrigger(tm); } } }
protected void HookUpTrigger(TriggerManager tm) { tm.Activate += new EventHandler(tm_Activate); tm.Deactivate += new EventHandler(tm_Deactivate); }
private void AddMastTrigger(Trigger t) { var oldtm = Triggers.FirstOrDefault(trig => trig.Trigger.Id == t.Id); if (oldtm != null) { if (ActiveTriggers.Contains(oldtm)) { // trigger with the same ID already exists and is currently active (in which case we don't want to update it or it could re-evaluate). return; } else { // trigger with the same ID already exists, replace it Triggers.Remove(oldtm); UnHookTrigger(oldtm); } } // add the new trigger TriggerManager tm = new TriggerManager(t, MastInterface); Triggers.Add(tm); HookUpTrigger(tm); }
/// <summary> /// Used to force the deactivation of a trigger /// </summary> /// <param name="t">The trigger that is to be deactivated</param> protected void OnTriggerDeactivate(TriggerManager tm) { ActiveTriggers.Remove(tm); if (DeactivateTrigger != null) DeactivateTrigger(this, new TriggerEventArgs(tm.Trigger)); }
protected void OnTriggerActivate(TriggerManager tm) { ActiveTriggers.Add(tm); // Note: this should always be on the main thread if UseDispatcherThread == true //a trigger is letting us know it's ready, pass it on. if (ActivateTrigger != null) ActivateTrigger(this, new TriggerEventArgs(tm.Trigger)); }
private void Evaluate(TriggerManager tm) { try { //If it succeeds, it will take care of itself and fire event if ready tm.Evaluate(); } catch (Exception ex) { TriggerEvaluationFailed(this, new TriggerFailureEventArgs(tm.Trigger, ex)); } }
private void EvaluateAsync(TriggerManager tm) { AsyncHelper.UI(delegate { Evaluate(tm); }, Deployment.Current.Dispatcher, true, ReenteranceMode.Bypass); }