private void CleanUpConnection()
        {
            IRelayedOnewayListener relayedOnewayListener = null;

            lock (base.ThisLock)
            {
                relayedOnewayListener = this.connection;
                this.connection       = null;
            }
            if (relayedOnewayListener != null)
            {
                relayedOnewayListener.Unregister(this);
                relayedOnewayListener.Abort();
            }
        }
        protected override void OnClose(TimeSpan timeout)
        {
            TimeoutHelper          timeoutHelper         = new TimeoutHelper(timeout);
            IRelayedOnewayListener relayedOnewayListener = null;

            lock (base.ThisLock)
            {
                relayedOnewayListener = this.connection;
                this.connection       = null;
            }
            if (relayedOnewayListener != null)
            {
                relayedOnewayListener.Unregister(this);
                relayedOnewayListener.Close(timeoutHelper.RemainingTime());
            }
            base.OnClose(timeoutHelper.RemainingTime());
        }
        protected override IAsyncResult OnBeginClose(TimeSpan timeout, AsyncCallback callback, object state)
        {
            IRelayedOnewayListener relayedOnewayListener = null;

            lock (base.ThisLock)
            {
                relayedOnewayListener = this.connection;
                this.connection       = null;
            }
            if (relayedOnewayListener == null)
            {
                return(new DelegatingAsyncResult(new Func <TimeSpan, AsyncCallback, object, IAsyncResult>(this.OnBeginClose), new Action <IAsyncResult>(this.OnEndClose), timeout, callback, state));
            }
            relayedOnewayListener.Unregister(this);
            IRelayedOnewayListener relayedOnewayListener1 = relayedOnewayListener;
            IRelayedOnewayListener relayedOnewayListener2 = relayedOnewayListener;

            return(new Microsoft.ServiceBus.Common.ChainedAsyncResult(timeout, callback, state, new Microsoft.ServiceBus.Common.ChainedBeginHandler(relayedOnewayListener1.BeginClose), new Microsoft.ServiceBus.Common.ChainedEndHandler(relayedOnewayListener2.EndClose), new Microsoft.ServiceBus.Common.ChainedBeginHandler(this.OnBeginClose), new Microsoft.ServiceBus.Common.ChainedEndHandler(this.OnEndClose)));
        }