예제 #1
0
        /// <summary>
        ///     Register a trigger
        /// </summary>
        /// <param name="trigger">The trigger</param>
        public void RegisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new()
        {
            var triggerList = this._triggers.GetOrAdd(typeof(T), x => new List <ISterlingTrigger>());

            lock (((ICollection)triggerList).SyncRoot)
            {
                triggerList.Add(trigger);
            }
        }
예제 #2
0
        /// <summary>
        ///     Register a trigger
        /// </summary>
        /// <param name="trigger">The trigger</param>
        public void RegisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new()
        {
            if (!_triggers.ContainsKey(typeof(T)))
            {
                lock (((ICollection)_triggers).SyncRoot)
                {
                    if (!_triggers.ContainsKey(typeof(T)))
                    {
                        _triggers.Add(typeof(T), new List <ISterlingTrigger>());
                    }
                }
            }

            _triggers[typeof(T)].Add(trigger);
        }
예제 #3
0
        /// <summary>
        ///     Unregister the trigger
        /// </summary>
        /// <param name="trigger">The trigger</param>
        public void UnregisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new()
        {
            if (!this._triggers.ContainsKey(typeof(T)))
            {
                return;
            }

            if (this._triggers.TryGetValue(typeof(T), out List <ISterlingTrigger> triggerlist))
            {
                lock (((ICollection)triggerlist).SyncRoot)
                {
                    if (triggerlist.Contains(trigger))
                    {
                        triggerlist.Remove(trigger);
                    }
                }
            }
        }
예제 #4
0
        /// <summary>
        ///     Unregister the trigger
        /// </summary>
        /// <param name="trigger">The trigger</param>
        public void UnregisterTrigger <T, TKey>(BaseSterlingTrigger <T, TKey> trigger) where T : class, new()
        {
            if (!_triggers.ContainsKey(typeof(T)))
            {
                return;
            }

            if (_triggers[typeof(T)].Contains(trigger))
            {
                lock (((ICollection)_triggers).SyncRoot)
                {
                    if (_triggers[typeof(T)].Contains(trigger))
                    {
                        _triggers[typeof(T)].Remove(trigger);
                    }
                }
            }
        }