public void OnTick(int insID, OnTickDelegate onTick, bool isSubscribe) { if (onTick == null) return; if (isSubscribe) { if (!_insID_onTicks.ContainsKey(insID)) { _insID_onTicks.Add(insID, new List<OnTickDelegate>() { onTick }); } else { var onTicks = _insID_onTicks[insID]; if (!onTicks.Contains(onTick)) { onTicks.Add(onTick); } } } else { if (_insID_onTicks.ContainsKey(insID)) { var onTicks = _insID_onTicks[insID]; if (onTicks.Contains(onTick)) { onTicks.Remove(onTick); if (!onTicks.Any()) { _insID_onTicks.Remove(insID); } } } } }
public Clock(OnTickDelegate onTickCallback) { _timer = new System.Threading.Timer(OnTickHappened, null, Timeout.InfiniteTimeSpan, Timeout.InfiniteTimeSpan); if (onTickCallback != null) { OnTick += onTickCallback; } }
public void OnTick(int insID, OnTickDelegate onTick, bool isSubscribe) { if (isSubscribe) { if (!_ins_onTick.ContainsKey(insID)) { _ins_onTick.Add(insID, onTick); _tickDisp.Subscribe(this, insID, OnTick); } } else { if (_ins_onTick.ContainsKey(insID)) { _ins_onTick.Remove(insID); _tickDisp.Unsubscribe(this, insID); } } }