¿Cómo inicio de aplicación una de la otra en C #?
-
12-09-2019 - |
Pregunta
Tengo dos aplicaciones de escritorio. Después de cerrar la primera aplicación, la primera aplicación se iniciará la segunda aplicación.
¿Cómo inicio de la segunda aplicación después de terminar la primera aplicación?
Mi primera aplicación crea un escritorio independiente.
Solución
Puede utilizar la clase de proceso de .NET para iniciar un proceso que otras personas describen. Entonces la pregunta es cuándo llamar.
En la mayoría de los casos, ya sea usando Form.Closing
o evento Form.Closed
parece ser una elección fácil.
Sin embargo, si otra persona puede controlar el evento y se puede fijar a CancelEventArgs.Cancel
cierto, esto puede no ser el lugar adecuado para hacer esto. Además, los eventos Form.Closing
y Form.Closed
no serán levantados cuando Application.Exit()
se llama. No estoy seguro de si alguno de los eventos serán levantados si se producen excepciones no controladas. (También, usted tiene que decidir si desea iniciar la segunda aplicación en el 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:
- Crea 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 se adjunta a continuación muestra un caso muy simple: mi aplicación de la muestra pone en marcha la primera libreta. Entonces, cuando se cierra la libreta, se pone en marcha y la propia mspaint salidas.
Si desea ocultar la consola, sólo tiene que establecer la propiedad 'Tipo de salida' de 'aplicación de consola' a 'Aplicación de Windows' en la pestaña de propiedades de Proyecto 'Aplicación'.
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;
}
}
}
}
Otros consejos
Utilice la clase Process Al salir su primera aplicación.
var p = new Process();
p.StartInfo.FileName = "notepad.exe"; // just for example, you can use yours.
p.Start();
Se podía sin caparazón a él, para que cuando esté a punto de salir de la primera aplicación acaba de comenzar la segunda aplicación a través de:
System.Diagnostics.Process.Start(@"PATH\NAME.EXE");
El uso de .NET Process
clase.
Algunos código de ejemplo:
try
{
stateMainLayout b = new stateMainLayout();
b.Location = Screen.AllScreens[1].WorkingArea.Location;
b.ShowDialog();
}
catch
{
stateMainLayout b = new stateMainLayout();
b.ShowDialog();
}
CSharp / PowerShell Para llamar a otra del programa y enviar / Recieve datos: https: //huseyincakir.wordpress. com / 2014/12/23 / envío de entradas-de-csharppowershell-a-otra-programa /
En algunos casos su necesario añadir Directorio de trabajo a su código con el fin de hacer que la aplicación funciona perfectamente. especialmente cuando la aplicación tiene la dependencia a la DLL y otros recursos.
TestProcess.StartInfo.FileName = "notepad.exe";
TestProcess.StartInfo.WorkingDirectory = @"C:\\blah\blah\Directory of notepad.exe\";
TestProcess.Start();
Aquí NombreProc significa el nombre de la aplicación que desea iniciar pero sólo puede iniciar la aplicación del sistema y alguna otra aplicación
public void Startapp(String ProcName)
{
try
{
Process firstProc = new Process();
firstProc.StartInfo.FileName = ProcName;
firstProc.EnableRaisingEvents = true;
firstProc.Start();
}
catch (Exception ex)
{
MessageBox.Show(ex.Message);
}
}