public override void Close()
        {
            WRITE_LOG(string.Format("Close socket {2} {0}:{1}", Host, Port, Id));

            List <Tuple <byte[], Action <bool>, Action <TcpTransportResult> > > requests;

            lock (SyncRoot)
            {
                if (Closed)
                {
                    return;
                }
                try
                {
                    _wrapper.Closed         -= Wrapper_OnClosed;
                    _wrapper.PacketReceived -= Wrapper_OnPacketReceived;
                    _wrapper.Close();
                }
                catch (Exception ex)
                {
                    Helpers.Execute.ShowDebugMessage("NativeTCPTransport.Close ex " + ex);
                }
                Closed   = true;
                requests = new List <Tuple <byte[], Action <bool>, Action <TcpTransportResult> > >(_requests);
                _requests.Clear();
                StopCheckConfigTimer();
            }

            if (requests.Count > 0)
            {
                for (var i = 0; i < requests.Count; i++)
                {
                    requests[i].Item3.SafeInvoke(new TcpTransportResult(new Exception("NativeTCPTransport closed")));
                }
            }
        }