private void Connect() { if (_radioDCSSync != null) { _radioDCSSync.Stop(); _radioDCSSync = null; } if (_lotATCSync != null) { _lotATCSync.Stop(); _lotATCSync = null; } bool connectionError = false; _radioDCSSync = new DCSRadioSyncManager(ClientRadioUpdated, ClientCoalitionUpdate, _clients, _guid, _newAircraft); _lotATCSync = new LotATCSyncHandler(ClientCoalitionUpdate, _clients, _guid); using (_tcpClient = new TcpClient()) { try { _tcpClient.SendTimeout = 10000; _tcpClient.NoDelay = true; // Wait for 10 seconds before aborting connection attempt - no SRS server running/port opened in that case _tcpClient.ConnectAsync(_serverEndpoint.Address, _serverEndpoint.Port).Wait(TimeSpan.FromSeconds(10)); if (_tcpClient.Connected) { _radioDCSSync.Start(); _lotATCSync.Start(); _tcpClient.NoDelay = true; CallOnMain(true); ClientSyncLoop(); } else { Logger.Error($"Failed to connect to server @ {_serverEndpoint.ToString()}"); // Signal disconnect including an error connectionError = true; } } catch (Exception ex) { Logger.Error(ex, "Could not connect to server"); connectionError = true; } } _radioDCSSync.Stop(); _lotATCSync.Stop(); //disconnect callback CallOnMain(false, connectionError); }