public void Dispose()
 {
     try
     {
         if (socket.Connected)
         {
             socket.Disconnect(false);
         }
         ConnectedStateChanged?.Invoke(socket.Connected);
         socket.Dispose();
     }
     catch (ObjectDisposedException) { }
 }
        public CommunicationTool(string networkHost, ushort networkPort)
        {
            NetworkHost = networkHost;
            NetworkPort = networkPort;

            // 连接
            _tcpClient.OnConnect += ss =>
            {
                ConnectedStateChanged?.Invoke(true);
                return(HandleResult.Ok);
            };

            // 关闭
            _tcpClient.OnClose += (ss, enOperation, errorCode) =>
            {
                ConnectedStateChanged?.Invoke(false);
                return(HandleResult.Ok);
            };

            // 接收
            _tcpClient.OnReceive += (ss, bytes) =>
            {
                // 获取字符串数据
                var strData = Encoding.ASCII.GetString(bytes).Substring(1, bytes.Length - 2);

                LogHelper.Info($"Received Data: {networkHost} >>> {strData}");

                // 分解字符串
                var infos = strData.Split(new[] { '_' }, StringSplitOptions.RemoveEmptyEntries);
                var index = infos[0];
                var codes = string.Join(",", infos.Skip(1).ToArray());

                // 事件回调
                DataAvailable?.BeginInvoke(index, codes, null, null);

                return(HandleResult.Ok);
            };
        }
 protected virtual void OnConnectedStateChanged()
 {
     Logger.Info("OnConnectedStateChanged");
     ConnectedStateChanged?.Invoke(this, EventArgs.Empty);
 }