예제 #1
0
        private void RaiseEvent <TEventArgs>(string eventKey, TEventArgs eventArgs) where TEventArgs : EventArgs
        {
            try
            {
                lock (_session.CallbackLockObject)
                {
                    if (_session.Handle == null)
                    {
                        return;
                    }

                    if (_callbackManager.GetHandlerCount(eventKey) == 0)
                    {
                        return;
                    }

                    if (_callbackManager.SynchronizeCallbacks)
                    {
                        _callbackManager.RaiseGenericEventAsync <TEventArgs>(eventKey, this, eventArgs);
                    }
                    else
                    {
                        _callbackManager.RaiseGenericEvent <TEventArgs>(eventKey, this, eventArgs);
                    }
                }
            }
            catch (NullReferenceException)
            {
                throw ExceptionBuilder.SessionDisposed();
            }
        }