J'écris un serveur de jeu qui a une limite de temps. J'accepterai l'entrée à travers une douille jusqu'à ce que le temporisateur soit fait. J'utilise une boucle pour toujours recevoir des données du client.Comment rompre une boucle qui s'exécute dans un thread différent en utilisant un TimerCallback en C#?
while(true)
{
socket.Receive(buffer);
}
Je dois sortir de cette boucle lorsque la limite de temps se termine. Désolé, je ne pense pas que je suis assez spécifique.
J'ai deux lecteurs qui envoient et reçoivent des données de manière asynchrone. La minuterie est utilisée pour garder une trace de l'heure pour les deux joueurs. Je dois terminer la réception des données des deux joueurs et redonner des statistiques sur leur jeu à la fin de la minuterie. Avoir une minuterie chien de garde fermer le socket lorsque le délai expire.
La meilleure façon de faire cela est généralement d'avoir le fil de police lui-même et de fournir un mécanisme de contrôle. L'interruption du fil devient souvent poilue autrement. –
Pourrais-je simplement tuer le fil si la minuterie s'éteint? – Ge3ng
Mieux tuer le client plutôt que le fil, comme je viens de le suggérer dans ma réponse. Lorsque vous obtenez SocketException, vous pouvez gérer l'erreur et effectuer des actions correctives –