web-dev-qa-db-fra.com

Le thread s'est terminé avec le code 0 (0x0) sans exception non gérée

Lors du débogage de mon application C #, j'ai constaté une grande quantité d'occurrences de la phrase suivante:

Le thread - s'est terminé avec le code 0 (0x0).

L'application continue de fonctionner et aucune exception n'est interceptée/non gérée.

L'application fonctionne sur Windows 7 64 bits et déboguée avec la plate-forme x86.

78
Gionata

Ceci est juste un message de débogage. Vous pouvez désactiver cette option en cliquant avec le bouton droit de la souris dans la fenêtre de sortie et en décochant Thread Exit Messages.

http://msdn.Microsoft.com/en-us/library/bs4c1wda.aspx

En plus de programmer hors de votre application, la fenêtre Sortie peut afficher des informations sur:

  • Modules que le débogueur a chargés ou déchargés.

  • Les exceptions qui sont jetés.

  • Processus qui se terminent.

  • Fils qui se terminent.

108
BlueM

Eh bien, une application peut avoir beaucoup de threads s'exécutant en parallèle. Certains sont gérés par vous, le codeur, d'autres par des classes de framework (particulièrement si vous êtes dans un environnement graphique).

Lorsqu'un thread a terminé sa tâche, il existe et cesse d'exister. Il n'y a rien d'alarmant à cela et vous ne devriez pas vous en soucier.

8
Kek

Afin de compléter la réponse acceptée par BluM, vous pouvez la désactiver ici:

Outils> Options> Débogage> Paramètres de sortie généraux> Messages de fin de thread: Désactivé

5
alphanoch

si votre application utilise des threads directement ou indirectement (c'est-à-dire derrière la scène, comme dans une bibliothèque tierce), il est tout à fait courant que les threads se terminent une fois qu'ils sont terminés ... ce qui est fondamentalement ce que vous décrivez ... le débogueur affiche ce message ... vous pouvez configurer le débogueur pour ne pas afficher ce message si vous ne le souhaitez pas ...

Si ce qui précède ne vous aide pas, merci de fournir plus de détails, car je ne suis pas sûr du problème auquel vous êtes confronté ...

4
Yahia

L'exécution de requêtes Linq peut générer des threads supplémentaires. Lorsque j'essaie d'exécuter du code qui utilise la collection de requêtes Linq dans la fenêtre immédiate, il refuse souvent de s'exécuter car le nombre de threads disponibles pour le débogueur est insuffisant.

Comme d'autres l'ont déjà dit, il est tout à fait normal que les threads se terminent lorsqu'ils sont terminés.

1
tonyb

Le framework crée des threads pour supporter chaque fenêtre que vous créez, par exemple, lorsque vous créez un formulaire et le .Show (). Lorsque les fenêtres se ferment, les threads sont terminés (c’est-à-dire qu’ils sortent).

C'est un comportement normal. Cependant, si l'application crée des threads et qu'il y a beaucoup de messages de sortie de thread correspondant à ces threads (on pourrait peut-être dire par les noms du thread en leur donnant des noms distincts dans l'application), alors peut-être que cela indique un problème avec l'application créant des threads quand il ne devrait pas, en raison d'une erreur de logique de programme.

Ce serait une suite intéressante que l'affiche originale nous dise ce qu'il/elle a découvert concernant les problèmes avec le crash du serveur. J'ai l'impression que cela n'a rien à voir avec cela ... mais c'est difficile à dire à partir des informations postées.

1
JoGusto