public override void Dispose()
        {
            lock (_lock)
            {
                if (_isDisposed)
                {
                    return;
                }
                _isDisposed = true;
                ReTransmitTimer.Dispose();
                TimeOutTimer.Dispose();
                EndCompletedTimer.Dispose();

                SipAbstractClientTransaction tx;
                _table.TryRemove(this.GetId(), out tx);

                //removed comment. but not sure. 03.06.2013
                State = TerminatedState; //is done outside of this method?
            }

            if (_stateObserver != null)
            {
                //removed comment. but not sure. 03.06.2013
                _stateObserver.OnNext(CreateStateInfo(State.Name)); //is done outside of this method?
                _stateObserver.OnCompleted();
            }
        }
        public override void Dispose()
        {
            lock (_lock)
            {
                if (_isDisposed)
                {
                    return;
                }
                _isDisposed = true;
                ReTransmitTimer.Dispose();
                TimeOutTimer.Dispose();
                EndCompletedTimer.Dispose();

                SipAbstractClientTransaction tx;
                _table.TryRemove(this.GetId(), out tx);
            }

            if (_stateObserver != null)
            {
                _stateObserver.OnNext(CreateStateInfo(SipTransactionStateName.Terminated));
                _stateObserver.OnCompleted();
            }
        }