Это очень полезно при подключении к хосту с вероятностью не прослушивания данного порта. Каждый такой вызов тратит около 15 секунд времени, прежде чем освободить поток.
У меня есть следующий код, как рекомендуется во многих ответах на stackoverflow:
Код: Выделить всё
public bool Test()
{
using (var tcp = new TcpClient())
{
var c = tcp.BeginConnect(IPAddress.Parse("8.8.8.8"), 8080, null, null);
var success = c.AsyncWaitHandle.WaitOne(TimeSpan.FromSeconds(1));
if (!success)
{
Console.WriteLine("Before cleanup");
tcp.Close();
tcp.EndConnect(c);
Console.WriteLine("After cleanup");
throw new Exception("Failed to connect.");
}
}
return true;
}
Подробнее здесь: https://stackoverflow.com/questions/281 ... ct-timeout
Полная версия