private async Task ConnectInternalAsync(IPEndPoint ip) { if (Sock.Connected) { Sock.Disconnect(true); Stream = null; Reader = null; } #if NETCOREAPP await Sock.ConnectAsync(ip); #else var tcs = new TaskCompletionSource <bool>(); var sae = new SocketAsyncEventArgs(); sae.RemoteEndPoint = ip; sae.Completed += (s, e) => { tcs.SetResult(true); }; if (Sock.ConnectAsync(sae)) { await tcs.Task; } #endif Stream = new NetworkStream(Sock); Reader = new StreamReader(Stream, Encoding.UTF8, false, 1024, true); }