2010-10-07 39 views
3

Je cette application C# qui commence au démarrage du système dans le bac, et j'ai le problème suivant avec elle, uniquement sous Windows XPsystème C# application de plateau d'arrêt

Je ne peux pas redémarrer le PC alors que l'application est fonctionnement. Si j'utilise file> exit, ça s'arrête et je peux redémarrer. mais si je tente de redémarrer avec l'application ouverte, juste ne le fera pas

J'ai essayé d'ajouter ceci dans le principal constructeur de la fenêtre, je sais pas si c'est la bonne chose à faire:

Application.ApplicationExit += new EventHandler(this.OnApplicationExit); 

et OnApplicationExit fonction fait la procédure de fermeture de l'application .. mais cela n'aide pas

des idées?

+0

Ceci est probablement dû au fait que le thread graphique est occupé à faire quelque chose. Que faites-vous dans l'application? – Aliostad

+0

Comment démarrez-vous votre application? par l'invite de commande ou à travers l'interface utilisateur ou autre chose? – Shekhar

+0

@Joey: J'éviterais de dire que vous devriez utiliser 'TerminateProcess'. C'est plus un dernier recours que vous ne devriez utiliser que si vous le devez vraiment, car cela ne permet pas au processus de s'arrêter de manière ordonnée. –

Répondre

4

Avez-vous un gestionnaire d'événements FormClosing quelque part où vous faites quelque chose comme e.Cancel = true;?

Si oui, changez d'examiner d'abord la raison pour près de décider si elle doit annuler ou non comme:

if(e.CloseReason != WindowsShutDown) 
    e.Cancel = true; 

Il pourrait y avoir d'autres CloseReasons où vous devez également pas annuler la fermeture donc peut-être la peine regardant MSDN pour cela.

+0

Cela a semblé résoudre mon problème. Je n'aurais jamais imaginé que mon application pourrait bloquer tout le système. Je vous remercie! –

1

J'ai vu cela se produire avant si vous avez Cancel = true quelque part dans votre gestionnaire de sortie.