private void ReconnectServer() { if (_tcpClient.ConnectionStatus == TcpConnectionStatus.ConnectionEstablished) { return; } _logger.InfoFormat("Try to reconnect to server:{0}.", _serverEndPoint); _tcpClient.ReconnectToServer(); }
private void ReconnectServer() { if (_tcpClient.IsStopped) { _logger.Info("Stop to reconnect to server as the tcp client is stopped."); return; } if (_tcpClient.ConnectionStatus == TcpConnectionStatus.Established) { return; } if (Interlocked.CompareExchange(ref _isReconnecting, 1, 0) != 0) { _logger.Info("Reconnect to server is in progress, ignore the current reconnecting."); return; } Thread.Sleep(_setting.ReconnectInterval); _logger.InfoFormat("Try to reconnect to server: {0}.", _serverEndPoint); var hasException = false; try { _tcpClient.ReconnectToServer(); } catch (Exception ex) { _logger.ErrorFormat("Reconnect to server has exception.", ex); hasException = true; } finally { Interlocked.Exchange(ref _isReconnecting, 0); } if (hasException) { ReconnectServer(); } }