public override void Dispose()
 {
     base.Dispose();
     if (listener != null)
     {
         listener.Disconnect(groupDelegate);
         listener      = null;
         groupDelegate = null;
     }
 }