Puede usar .NET's Process Class para iniciar un proceso como lo describieron otras personas. Entonces, la pregunta es cuándo llamar.
En la mayoría de los casos, utilizar el evento Form.Closing
o Form.Closed
parece ser una opción fácil.
Sin embargo, si alguien más puede manejar el evento y puede establecer CancelEventArgs.Cancel
en verdadero, este puede no ser el lugar correcto para hacerlo. Además, los eventos Form.Closing
y Form.Closed
no se generarán cuando se llame al Application.Exit()
. No estoy seguro de si se generarán eventos si se producen excepciones no controladas. (Además, debe decidir si desea iniciar la segunda aplicación en caso de Application.Exit()
o cualquier excepción no controlada).
Si realmente quiere asegurarse de que la segunda aplicación (App2) se inicia después de la primera aplicación (App1) salió, puede jugar un truco:
- Crear una solicitud por separado (APP0)
- APP0 lanza App1
- APP0 espera App1 para salir con Process.WaitExit()
- APP0 lanza App2 y sale de sí
La aplicación de consola de ejemplo que se adjunta a continuación muestra un caso muy simple: mi aplicación de muestra inicia primero el bloc de notas. Luego, cuando el bloc de notas sale, se inicia mspaint y se cierra.
Si desea ocultar la consola, puede simplemente configurar la propiedad 'Tipo de salida' desde 'Aplicación de consola' a 'Aplicación de Windows' en la pestaña 'Aplicación' de Propiedad del proyecto.
Código de ejemplo:
using System;
using System.Diagnostics;
namespace ProcessExitSample
{
class Program
{
static void Main(string[] args)
{
try
{
Process firstProc = new Process();
firstProc.StartInfo.FileName = "notepad.exe";
firstProc.EnableRaisingEvents = true;
firstProc.Start();
firstProc.WaitForExit();
//You may want to perform different actions depending on the exit code.
Console.WriteLine("First process exited: " + firstProc.ExitCode);
Process secondProc = new Process();
secondProc.StartInfo.FileName = "mspaint.exe";
secondProc.Start();
}
catch (Exception ex)
{
Console.WriteLine("An error occurred!!!: " + ex.Message);
return;
}
}
}
}
en cuyo caso tengo que empezar segundo aplicación, ya sea cierre de formulario o formulario cerrado (primera solicitud) –
No importa (a menos que cancele el cierre en 'Cierre'), sin El proceso ce se inicia de forma asincrónica y no impedirá que su aplicación continúe haciendo lo que se supone que debe hacer, incluido el cierre. –