C# 100 % de temps CPU avec un TCPListener - C#/.NET managed - Programmation
Marsh Posté le 20-08-2004 à 00:51:56
j'ai pas encore testé C# en réseau, je me suis pas encore penché sur l'API. si ça se trouve y a une .Méthode pour faire ça, dans le cas contraire, insère toi même un temporisation à chaque itération de boucle.
Par exemple, je ferais un
if(listener.Pending())
{ /* action */ }
else
{ Thread.Sleep( 100 ); }
edit : d'ailleurs quand j'y pense, il doit y avoir un truc avec des AsynCallBack pas très loin
sinon tu peux faire en bloquant, avec .AcceptTCPClient() et .AcceptSocket()
Marsh Posté le 20-08-2004 à 10:56:29
Oui c'est ça, je croyais que listener.Pending() était une méthode synchronisée bloquante, comme listener.AcceptTcpClient(), et en fait non, résultat des courses, j'avais une magnifique boucle infinie avec listener.Pending() qui me renvoyait true et un beau while(true) au dessus.
J'ai enlevé la conditionnelle sur le pending et tout est OK.
Merci à toi en tout cas
Marsh Posté le 19-08-2004 à 09:49:04
Salut
J'ai écrit un petit serveur Web en C# avec une fonction ecoute pour traiter les demande de connection par les clients :
La méthode ecoute est lancée dans un Thread à l'intérieur de l'objet serveur :
Tout fonctionne...à part le fait que dés que je lance tService.start(), j'ai pratiquement 100% de temps CPU pris par l'appli, que je sois en Windows.Form ou en console, et quelle que soit la priorité du thread tService (normal, lowest..)
Quelqu'un pourrait m'aider ?