2008-10-16 10 views
2

J'ai une application console .net C# (pas un service). il se connecte essentiellement à un service web, obtient des fichiers xml, copie ces fichiers à un certain endroit sur un disque, valide le xml, le traite et envoie ces objets à un autre service web.Console C# Application résidant en mémoire après la sortie

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é tout autour dans la principale méthode avec un essai, d'attraper un ApplicationException, et je n'a toujours rien à la raison pour laquelle l'application se bloque même si tout fonctionne bien autrement ...

Tout le monde a un indice où commencer à vérifier la partie défectueuse?

+0

Et vous êtes sûr que l'application en mémoire n'est pas YourExe.vshost.exe? :) – OregonGhost

+0

Haha, ce serait drôle :) – leppie

+0

Pas si drôle. Les choses sont toujours nouvelles pour chaque personne une fois, et c'est une chose parfaitement respectable à poser sur ce site. –

Répondre

4

Examinez l'utilisation du thread et les appels asynchrones.

+0

C'était le problème ... J'ai négligé un appel asynchrone à une connexion webservice ... merci. – scoob

2

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

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

1

Vous avez presque certainement un thread non-terminé dans votre application. Comme Jon l'a dit, attacher avec le débogueur et voir ce que les discussions sont en vie.

1

Comme toutes les autres réponses ont suggéré que vous n'avez probablement un fil persistant, mais ce ne est pas nécessairement que vous avez créé explicitement, vous devrez peut-être appeler Dispose ou quelque chose de similaire sur un ou plusieurs de vos objets

2

Si vous déboguez l'application, puis j'ai vu la situation où Visual Studio crée un exe hôte 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 exe hôte reste après que vous avez terminé le débogage de votre programme afin qu'il soit prêt et qu'il puisse démarrer une nouvelle session de débogage rapidement.

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

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