Application.Exit() inefficace [Résolu]

sachie 93 Messages postés jeudi 7 juin 2007Date d'inscription 16 septembre 2010 Dernière intervention - 1 sept. 2008 à 17:54 - Dernière réponse : sachie 93 Messages postés jeudi 7 juin 2007Date d'inscription 16 septembre 2010 Dernière intervention
- 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!
Afficher la suite 

Votre réponse

3 réponses

Meilleure réponse
leprov 1163 Messages postés vendredi 23 juillet 2004Date d'inscription 21 octobre 2010 Dernière intervention - 1 sept. 2008 à 18:46
3
Merci
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

Merci leprov 3

Avec quelques mots c'est encore mieux Ajouter un commentaire

Codes Sources a aidé 120 internautes ce mois-ci

Commenter la réponse de leprov
Julien237 884 Messages postés vendredi 3 novembre 2000Date d'inscription 3 mars 2009 Dernière intervention - 1 sept. 2008 à 21:45
0
Merci
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.
Commenter la réponse de Julien237
sachie 93 Messages postés jeudi 7 juin 2007Date d'inscription 16 septembre 2010 Dernière intervention - 2 sept. 2008 à 09:01
0
Merci
Merci pour vos réponses!
L' Environment.Exit(int) fonctionne nickel!
Commenter la réponse de sachie

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.