public async Task Connect() { if (Server == null) { return; } parent.IsConnecting = true; parent.IsAuthed = false; parent.ReadOrWriteFailed = false; _conn = new TcpClient { NoDelay = true }; try { await _conn.ConnectAsync(Server.Hostname, Server.Port); if (!_conn.Connected) { return; } if (Server.Ssl) { SslStream sslStream; if (Server.IgnoreCertErrors) { sslStream = new SslStream(_conn.GetStream(), true, new RemoteCertificateValidationCallback(CheckCert)); } else { sslStream = new SslStream(_conn.GetStream()); } await sslStream.AuthenticateAsClientAsync(Server.Hostname); _stream = sslStream; } else { _stream = _conn.GetStream(); } _clientStreamReader = new StreamReader(_stream); _clientStreamWriter = new StreamWriter(_stream); parent.IsConnecting = false; parent.IsConnected = true; parent.AttemptAuth(); while (true) { var line = await _clientStreamReader.ReadLineAsync(); await parent.RecieveLine(line); } } catch (Exception e) { Console.WriteLine(e.Message); Console.WriteLine(e.StackTrace); } }