/// <summary>
/// Unsubscibes from a pooled listener, and destrpys it if no additionals subscribers are present.
/// </summary>
/// <param name="listener"></param>
private void ReleaseListener(MessageStreamListener listener)
{
lock (ListenerSync)
{
listener.Unsubscribe(this.HandleMessage);
var info = listenerRefs[listener];
if (info.RefCount == 1)
{
listenerRefs.Remove(listener);
listeners.Remove(info.HashKey);
try { using (listener) listener.Stop(); }
catch { }
}
else
{
info.RefCount--;
}
}
}