예제 #1
0
        public void RegisterCallback <T>(Action <T> callback) where T : IResponse, new()
        {
            if (callback == null)
            {
                throw new ArgumentNullException("callback");
            }

            List <CallbackContainer> callbacks;

            if (_callbackHandlers.TryGetValue(typeof(T), out callbacks) == false)
            {
                _callbackHandlers[typeof(T)] = callbacks = new List <CallbackContainer>();
            }

            callbacks.Add(CallbackContainer.Create(callback));
        }
예제 #2
0
 protected override void AddCallbackForPinValueChangedEvent(int pinNumber, PinEventTypes eventTypes, PinChangeEventHandler callback)
 {
     lock (_callbackContainersLock)
     {
         if (_callbackContainers.TryGetValue(pinNumber, out var cb))
         {
             cb.EventTypes    = cb.EventTypes | eventTypes;
             cb.OnPinChanged += callback;
         }
         else
         {
             var cb2 = new CallbackContainer(pinNumber, eventTypes);
             cb2.OnPinChanged += callback;
             _callbackContainers.Add(pinNumber, cb2);
         }
     }
 }