Posted on February 12, 2015, 7:08 pm By romanvas
Правильное решение – использовать асинхронное соединение. Один из вариантов –
TcpClient.BeginConnect.
Пример (взят с https://msdn.microsoft.com/en-us/library/system.net.sockets.tcpclient.connect%28v=vs.110%29.aspx):
public static void DoBeginConnect1(string host, int port)
{
// Асинхронное соединение к серверу
TcpClient t = new TcpClient(AddressFamily.InterNetwork);
IPAddress[] remoteHost = Dns.GetHostAddresses(host);
connectDone.Reset();
Console.WriteLine("Establishing Connection to {0}",
remoteHost[0]);
t.BeginConnect(remoteHost[0], port,
new AsyncCallback(ConnectCallback), t);
// Ждём здесь окончания процесса соединения.
connectDone.WaitOne();
Console.WriteLine("Connection established");
}
No comments yet Categories: С# Tags: asynccallback, c#, client, tcpclient, TcpClient.Connect, асинхронное соединение, подвешивать, программа