Socket.Select(),-1超时根本没有阻塞

我在多个套接字上调用Socket.Select并希望整个线程阻塞,直到一个(或多个)套接字准备就绪。 文档说如果你给出超时-1,超时应该是无穷大。 然而,它几乎自动返回。

我使用的是.NET 3.5。 这是我的代码:

Socket.Select(socketAVerifier, null, null, -1); foreach (var socketsPrets in socketAVerifier) { switch (socketsPrets.ProtocolType) { case ProtocolType.Tcp: AccepterConnection(); break; case ProtocolType.Udp: EcouterBroadcast(); break; default: Journal.WriteLine("Socket de protocol inconnu" + socketsPrets.ProtocolType, "Serveur", Niveaux.Grave); break; } } 

有没有办法调用选择阻止?

似乎是.NET 3.5中的错误。 通过传递Int32.MaxInt来绕过

设置-1 (或Timeout.Infinite )是如何将其设置为阻止。

我隐约记得(所以这可能是错误的信息),如果其中一个套接字出现错误, Select()返回,即使您只对读取准备感兴趣,所以您可能想要检查这是否是原因并删除下次调用Select()时传递的列表连接失败。