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(); } }