private void ThreadCheckSocket()
        {
            Thread.CurrentThread.Priority = ThreadPriority.Normal;
            CountStateTest = 0;
            Random RandomWait = new Random();

            IsThreadRunning = true;

            while ((_SocketClient != null) && _SocketClient.Connected)
            {
                if (SendSocketDataAvailableNotification && (_SocketClient.Available > 0))
                {
#if FIRE_EVENT_BY_BEGININVOKE
                    if (OnDataAvailable != null)
                    {
                        OnDataAvailable.BeginInvoke(this, new SocketPortDataEventArgs(new SocketPortData(SocketMessageType.SocketDataAvailable, this)), null, null);
                    }
#else
                    if (OnDataAvailable != null)
                    {
                        OnDataAvailable(this, new SocketPortDataEventArgs(new SocketPortData(SocketMessageType.SocketDataAvailable, this)));
                    }
#endif
                }
                Thread.Sleep(RandomWait.Next(10));

                if (CountStateTest > SocketBreakUpCount)
                {
                    break;
                }
            }

            if ((_SocketClient != null) && _SocketClient.Connected)
            {
                _SocketClient.Close();
            }
            _SocketClient = null;

#if FIRE_EVENT_BY_BEGININVOKE
            if (OnEventMessage != null)
            {
                OnEventMessage.BeginInvoke(this, new SocketPortMessageEventArgs(SocketMessageType.Disconnected), null, null);
            }
#else
            if (OnEventMessage != null)
            {
                OnEventMessage(this, new SocketPortMessageEventArgs(SocketMessageType.Disconnected));
            }
#endif

            IsThreadRunning = false;
        }