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