2010-06-21 4 views
5

Est-il possible d'empêcher le chargement complet de MainForm pendant le processus de démarrage d'une application (vous ne savez pas comment cela s'appelle, l'initialisation des composants peut-être)?Comment fermer une application avant qu'elle soit complètement chargée?

J'ai essayé:

public MainForm() 
{ 
    if (true) 
    { 
     Application.Exit(); 
     return; 
    } 
    InitializeComponent(); 
} 

et

public MainForm() 
{ 
    if (true) 
    { 
     this.Close(); 
     Application.Exit(); 
     return; 
    } 
    InitializeComponent(); 
} 

et sans "retour"; ainsi que.

Le premier ne fait rien, alors que la deuxième solution lance un "Impossible d'accéder à un objet disposé." Erreur?

Est-il même possible de fermer toute l'application avant qu'elle soit complètement chargée? Pour clarifier le problème, je veux empêcher le chargement de l'application en cas de problème de connexion à la base de données.

+3

Peut-être qu'il serait préférable de vérifier la connectivité de la base de données avant d'appeler le constructeur pour le formulaire principal? Comme avoir un "splash" écran de démarrage qui vérifie toutes les conditions préalables au fonctionnement de l'application. Si une vérification échoue, elle peut être annulée à ce moment-là. Si tous les contrôles passent, le formulaire principal peut charger. –

+0

Merci de m'avoir fait remarquer, même si je n'ai pas envisagé cela du tout. Ce serait probablement la meilleure solution à mon problème général. – Marek

Répondre

6

Essayez Environment.Exit comme décrit here.

9

Comme ho1 a dit, Environment.Exit est la réponse. Par exemple:

public MainForm() 
{ 
    if (true) 
    { 
     Environment.Exit(0); 
    } 
    InitializeComponent(); 
} 

Cela entraînera l'application de fermer si la condition est true dans le instruction if.

0

Je pense que la réponse de rob_g est la bonne façon de procéder. Avoir la base de données initialisée et validée avant de montrer le formulaire est la meilleure solution à mon avis! Vous supprimez également la logique inutile du constructeur de formulaire, car le formulaire ne devrait pas vraiment se soucier de l'initialisation de la base de données.

+0

Comme je l'ai dit ci-dessous la question c'est probablement la meilleure solution au problème général, que je vais développer. – Marek

Questions connexes