Application.Exit() inefficace

Résolu
sachie Messages postés 93 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 16 septembre 2010 - 1 sept. 2008 à 17:54
sachie Messages postés 93 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 16 septembre 2010 - 2 sept. 2008 à 09:01
Bonjour à tous, j'ai eu un problème que j'ai 'salement' résolu et je voudrais savoir si quelqu'un a une solution plus propre et si l'on peut m'expliquer la raison:

J'effectue dans le Load d'une form plusieurs étapes de vérifications(caractérisées chacunes par une fonction) et lorsqu'il y a un problème je désire quitter l'application j'ai donc l'instruction Application..Exit()!

Mais il ne se passe rien, j'ai donc placé un boolean nommé erreur (=false) et qui passe à True dés qu'il y a une erreur et les autres étapes de vérifications sont zappées, et à la fin du Load je teste le booléen et s'il vaut true je quitte et ça marche!

Schéma:

bool erreur=false;

Load
{

verif1();

if(!erreur)
{
verif2();
}

if(!erreur)
{
verif3();
}
etc...

if(erreur)
{
Application.Exit();
}

}

donc voila je ne comprend pas pourquoi l'application.exit() n'a aucun effet au cours du load , avec ce bricolage ça marche mais j'aimerais comprendre merci!

3 réponses

leprov Messages postés 1160 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 21 octobre 2010 17
1 sept. 2008 à 18:46
Préfère environment.exit(int) plutot que application.exit qui ne quitte pas forcément l'application (quitte uniquement si pas de thread prioritaires en fond, etc. Le environement.exit a un effet similaire a un return dans le main et te permettra de quitter a coup sur. Application.exit est surtout fait pour quitter l'application, MAIS en restant respectueux des traitements en cours
3
Julien237 Messages postés 883 Date d'inscription vendredi 3 novembre 2000 Statut Membre Dernière intervention 3 mars 2009 7
1 sept. 2008 à 21:45
Sinon au niveau du traitement des erreurs, pourquoi ne pas utiliser les blocs try/catch prévus à cet effet et tellement plus propres :

try
{
   verif1();
   verif2();
   ....
}
catch (Exception ex)
{
   MessageBox.Show("Une erreur est survenue :\n" + ex.Message);
   Environment.Exit(1);
}

Si la nature de l'erreur est par exemple la non-existence d'un fichier, à la place de faire :
If (!File.Exists(filename))
   erreur = true;

Tu fais
If (!File.Exists(filename))
   throw new FileNotFoundException("Le fichier " + filename + " n'existe pas");

Ce qui est nettement plus propre et plus clair pour l'utilisateur qui saura ce qui pose problème.

<hr size="2" width="100%" />Julien.
0
sachie Messages postés 93 Date d'inscription jeudi 7 juin 2007 Statut Membre Dernière intervention 16 septembre 2010 2
2 sept. 2008 à 09:01
Merci pour vos réponses!
L' Environment.Exit(int) fonctionne nickel!
0
Rejoignez-nous