2010-06-21 16 views
5

Ist es möglich zu verhindern, dass MainForm beim Starten einer Anwendung vollständig geladen wird (nicht sicher, wie es heißt, Komponenteninitialisierung vielleicht)?Wie schließe ich die Anwendung, bevor sie vollständig geladen ist?

Ich habe versucht:

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

und

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

und ohne "Rückkehr"; auch.

Der erste tut eigentlich nichts, während die zweite Lösung ein "Kann nicht auf ein entsorgtes Objekt zugreifen" wirft. Error?

Ist es sogar möglich, die gesamte Anwendung zu schließen, bevor sie vollständig geladen ist?

Nur um es klar zu machen Ich möchte verhindern, dass die Anwendung im Falle eines Datenbankverbindungsproblems geladen wird.

+3

Vielleicht wäre es besser, vor dem Aufruf des Konstruktors für das Hauptformular nach Datenbankkonnektivität zu suchen? Wie ein "Laden" Splash-Bildschirm, der alle Voraussetzungen für die Anwendung funktioniert überprüft. Wenn eine Überprüfung fehlschlägt, kann sie zu diesem Zeitpunkt abgebrochen werden. Wenn alle Prüfungen bestanden sind, kann das Hauptformular geladen werden. –

+0

Vielen Dank, dass Sie darauf hingewiesen haben, während ich das überhaupt nicht bedacht habe. Das wäre wahrscheinlich die beste Lösung für mein generelles Problem. – Marek

Antwort

6

Versuchen Sie Environment.Exit wie beschrieben here.

9

Wie ho1 sagte, Environment.Exit ist die Antwort. Zum Beispiel:

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

, dass die Anwendung verursachen schließen, wenn die Bedingung true in der if-Anweisung.

0

Ich denke, die Antwort von rob_g ist der Weg zu gehen. Die Datenbank vor dem Anzeigen des Formulars initialisieren und validieren zu lassen, ist meines Erachtens die beste Lösung! Sie entfernen auch unnötige Logik aus dem Formularkonstruktor, da das Formular die Initialisierung der Datenbank nicht wirklich interessieren sollte.

+0

Wie ich unten die Frage gesagt habe, ist es wahrscheinlich die beste Lösung für das allgemeine Problem, das ich entwickeln werde. – Marek

Verwandte Themen