2009-08-18 10 views
0

J'ai une application Windows écrite en WPF et WF qui interagit également avec les services Web externes et une copie locale de Quickbooks via l'API Quickbooks.EXE reste dans le Gestionnaire des tâches après avoir quitté

Tout fonctionne bien, mais le seul problème est même après avoir quitté l'application Windows et Quickbooks, nous voyons toujours l'exécutable de l'application Windows assis dans le gestionnaire de tâches.

Quelqu'un a une idée de comment nous pouvons résoudre ce problème?

grâce, badallen

+0

Juste pour vérifier, vous êtes sûr que c'est l'exécutable autonome en cours d'exécution, et non * appname * .vshost.exe? –

+1

Je voudrais essayer de déboguer l'application. Après l'avoir "éteint" (fermé la fenêtre principale), cassez le débogueur pour voir ce que fait l'application maintenant invisible. Vous pouvez utiliser le serveur de symboles Microsoft pour obtenir des traces de pile détaillées. D'après votre description, il est assez difficile de deviner quel est le problème. –

+1

Je suggère de rechercher des threads non-fond qui ne sont pas arrêtés lorsque l'application principale s'arrête. –

Répondre

0

Juste une supposition, mais je chercherais à votre API WF ou QuickBooks accroché sur leurs Dispose() appels. Parfois, les API de réseau sont trop désireuses de nettoyer correctement, au lieu de simplement se fermer et se déconnecter.

Une façon de gérer cela est via un thread bg w/a timeout. Quelque chose comme le

suivant
 Action close = api.Dispose; 
     var ar = close.BeginInvoke(cb => close.EndInvoke(cb), null); 
     ar.AsyncWaitHandle.WaitOne(500); 
Questions connexes