2010-06-21 28 views
5

¿Es posible evitar que MainForm se cargue por completo durante el proceso de inicio de una aplicación (no estoy seguro de cómo se llama, Inicialización de componentes)?¿Cómo cerrar la aplicación antes de que esté completamente cargada?

He intentado:

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

y

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

y sin "volver"; también.

El primero no hace nada, mientras que la segunda solución arroja un "No se puede acceder a un objeto eliminado". ¿error?

¿Es posible cerrar toda la Aplicación antes de que esté completamente cargada?

Solo para aclararlo, quiero evitar que la aplicación se cargue en caso de problema de conexión con la base de datos.

+3

¿Tal vez sería mejor verificar la conectividad de la base de datos antes de llamar al constructor para el formulario principal? Como tener una pantalla de bienvenida "cargando" que verifica todos los requisitos previos para el funcionamiento de la aplicación. Si alguna verificación falla, puede abortar en ese punto. Si se superan todas las comprobaciones, se puede cargar el formulario principal. –

+0

Gracias por señalar esto, aunque no he considerado esto en absoluto. Esa sería probablemente la mejor solución para mi problema general. – Marek

Respuesta

6

Pruebe Environment.Exit como se describe here.

9

Como ho1 dijo, Environment.Exit es la respuesta. Por ejemplo:

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

Eso hará que la aplicación se cierre si la condición es true en la sentencia if.

0

Creo que la respuesta dada por rob_g es el camino a seguir. ¡Tener la base de datos inicializada y validada antes de mostrar el formulario es la mejor solución en mi opinión! También elimina la lógica innecesaria del constructor del formulario, ya que el formulario realmente no debería preocuparse por la inicialización de db.

+0

Como dije debajo de la pregunta, probablemente sea la mejor solución al problema general que voy a desarrollar. – Marek

Cuestiones relacionadas