Question

J'ai une application console .net C # (pas un service). il se connecte à un service Web, récupère des fichiers XML, les copie dans un emplacement donné sur un lecteur, valide le XML, le traite et envoie ces objets à un autre service Web.

Cependant, lorsque la méthode principale existe (et que la fenêtre de la console se ferme), je peux toujours voir le processus dans le gestionnaire de tâches.

J'ai essayé d'encadrer tout dans la méthode principale avec un essai, d'attraper une exception ApplicationException, et je n'ai toujours pas compris pourquoi l'application se bloque alors que tout fonctionne normalement sinon ...

Quelqu'un sait-il par où commencer pour rechercher la pièce défectueuse?

Était-ce utile?

La solution

Consultez l'utilisation des threads et des appels asynchrones.

Autres conseils

Si la fenêtre de la console est fermée, il semble très étrange que le processus soit toujours en cours d'exécution. Pouvez-vous y attacher dans le débogueur Visual Studio? (Évidemment, une version de débogage.)

Êtes-vous sûr que ce n'est pas une exécution précédente qui est toujours en cours d'exécution?

Si vous déboguez l'application, j'ai déjà vu le cas où Visual Studio crée un hôte exe nommé similaire à votre application avec .vshost.exe à la fin. Il utilise ce contrôle de votre application pour une meilleure expérience de débogage. Cet hôte exe reste présent après le débogage de votre programme afin qu'il soit prêt et en attente afin qu'il puisse démarrer rapidement une nouvelle session de débogage.

Êtes-vous sûr que ce n'est pas cet exe qui traîne?

Si vous exécutez votre application sans déboguer, reste-t-elle toujours là?

Vous avez presque certainement un thread non terminé dans votre application. Comme Jon a dit, attachez avec le débogueur et voyez quels threads sont en vie.

Comme toutes les autres réponses ont suggéré que vous ayez probablement un fil de discussion en attente, mais que vous n'en ayez pas nécessairement créé un explicitement, vous devrez peut-être appeler Dispose ou quelque chose de similaire sur un ou plusieurs de vos objets.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top