TCPClient TimeoutC#

Место общения программистов C#
Anonymous
TCPClient Timeout

Сообщение Anonymous »

Как настройка пользовательского тайм -аута для Beginconnect Async Call может быть выполнена в C#?
Это очень полезно, подключаясь к хосту с вероятностью не слушать в данном порту. Каждый такой вызов тратит впустую около 15 -х годов, прежде чем выпустить поток.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;
}
< /code>

Однако это не работает. Действительно, после вызова функция входит в переключатель «если», но она немедленно блокирует tcp.close () вызов и ожидает упомянутых 15 с. Можно как -то избежать?

Подробнее здесь: https://stackoverflow.com/questions/281 ... ct-timeout

Вернуться в «C#»