public void AddListener(IChannelListener listener) { lock (this) { if (IsClosed && !HasMessages) { listener.OnChannelClosed(Id); return; } listeners.Enqueue(listener); ProcessMessages(); TrimHandles(); } }