2010-12-05 11 views
1

j'ai une application Windows C# 4.0 avec problème de multithreadings est quand je ferme l'application, le processus reste sur, peu importe ce que je fais si je dois le faire:fenêtres Redémarrage forment l'application

environment.exit(1); 

ou le processus ne se fermerait pas,

problème est si j'ai exécuté environment.exit (1) alors application.restart() ne fonctionnerait pas alors.

une idée de comment tuer le processus, puis redémarrer?

+0

Tuez tous les fils de votre programme a donné naissance? – spender

+5

Ne devriez-vous pas essayer de résoudre votre problème de multithreading en premier? – ZippyV

Répondre

0

threads que votre application crée doit être terminée avant de quitter l'application autrement CPU et/ou de la mémoire seront consommés par les fils de suspension

+0

Il y a des threads qui doivent s'exécuter tout le temps qu'ils écoutent un port et des données gettig, anyw ay j'abandonne tous les threads sur l'événement de fermeture mais le processus ne se termine pas. – Stacker

3

Assurez-vous de faire tous vos threads de travail exécuter en arrière-plan (défini IsBackground true avant de les démarrer). Les threads d'arrière-plan n'empêchent pas le processus de se terminer.

+0

Je l'ai fait et cela empêche toujours le processus de sortir pour ne pas mentionner que j'abandonne tous les threads sur l'événement de clôture! – Stacker

+0

Vraiment? Que dit la fenêtre des threads du débogueur VS? – spender

4

Utilisez le débogueur. Après avoir fermé votre fenêtre principale, utilisez Debug + Break All. Débogage + Windows + Threads. Regardez la pile d'appels des threads que vous voyez là pour trouver celle qui empêche le programme de se terminer.

0

Vous pouvez quitter l'application complètement en tapant:

Application.Exit(); 

Pour application complètement Relancer:

Application.Restart();