Hallo Matthias,
Für TCP Verbindungen lässt sich das nicht pauschal festlegen, das hängt von der Geduld der anderen Seite ab ;-)
Aber i. a. sollten Werte über > 100ms und mehr möglich sein, da es im Wesen von TCP Verbindungen liegt,
dass es der (erste) Verbindungsaufbau etwas länger dauern kann.
Sleep(0) ist weitgehend mit einem
Yield vergleichbar, siehe auch:
http://stackoverflow.com/questions/2956961/difference-between-thread-sleep0-and-thread-yield
und
Sleep (Windows)
Egal, welchen Timeout Du wählst, ist Sleep eine ungünstigere Variante, da nach Ablauf ein
Kontextwechsel
stattfinden muss, um den Thread gleich wieder schlafen zulegen, wenn nichts anliegt.
Sehr kurze Intervalle verstärken das nur.
Günstiger ist es, den Listener in einem eigenen Thread zu betreiben und die Verbindungen via
AcceptTcpClient (oder AcceptSocket) zu verwenden. Damit blockiert der Thread während keine
Verbindungen anstehen und benötigt keine Ressourcen.
Siehe auch
Accept (WinSock), was am Ende für den Verbindungsaufbau zuständig ist.
Einige Beispiele (mit und ohne TPL) findet Du z. B.
C# in a Nutshell - Chapter 23: Asynchronous Methods
Gruß Elmar