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