/// <summary> /// Disconnect and stop cilent /// </summary> internal void StopExchange() { IsStarted = false; _isReadThreadEnabled = false; //lock (_networkInterfaceReadSyncObject) { //lock (_networkInterfaceWriteSyncObject) { _networkInterface?.Dispose(); _networkInterface = null; } } }
private bool ConnectToServer() { System.Net.Sockets.TcpClient client = null; try { _exchangeInterface?.Dispose(); client = new System.Net.Sockets.TcpClient(DestinationIpEndPoint.Address.ToString(), DestinationIpEndPoint.Port); if (IsEncrypted) { _exchangeInterface = new EncryptedTcpClientNetworkExchangeInterface(client, _serverName, _clientCertificates, _enabledSslProtocols, _checkCertificateRevocation, _encryptionPolicy, ValidateServerCertificateEvent, SelectLocalCertificateEvent); } else { _exchangeInterface = new TcpClientNetworkExchangeInterface(client); } _exchangeInterface.DisconnectedEvent += _exchangeInterface_DisconnectedEvent; IsConnected = true; _pingFailCount = 0; StartExchange(_exchangeInterface); OnConnectedEvent(_exchangeInterface.LocalEndPoint, _exchangeInterface.RemoteEndPoint); return(true); } catch (SocketException se) { _exchangeInterface?.Dispose(); client?.Close(); OnConnectionFailEvent(se.SocketErrorCode.ToString()); return(false); } catch (ThreadAbortException) { return(false); } catch (Exception ex) { _exchangeInterface?.Dispose(); client?.Close(); OnConnectionFailEvent(ex.Message); return(false); } }