È possibile utilizzare la classe di processo .NET per avviare un processo come descritto da altre persone. Quindi la domanda è quando chiamare.
Nella maggior parte dei casi, utilizzare l'evento Form.Closing
o Form.Closed
sembra essere una scelta facile.
Tuttavia, se qualcun altro può gestire l'evento e può impostare CancelEventArgs.Cancel
su true, questo potrebbe non essere il posto giusto per farlo. Inoltre, gli eventi Form.Closing
e Form.Closed
non verranno generati quando viene chiamato Application.Exit()
. Non sono sicuro se uno degli eventi verrà generato se si verificano eccezioni non gestite. (Inoltre, è necessario decidere se si desidera avviare la seconda applicazione in caso di Application.Exit()
o qualsiasi eccezione non gestita).
Se davvero si vuole assicurarsi che il secondo ricorso (App2) lancia dopo la prima applicazione (App1) uscita, si può giocare un trucco:
- Creare un'applicazione separata (APP0)
- APP0 lancia App1
- APP0 attende App1 per uscire con Process.WaitExit()
- APP0 lancia App2 e si esce
L'app di console di esempio allegata di seguito mostra un caso molto semplice: la mia app di esempio avvia prima il blocco note. Quindi, quando il blocco note si chiude, avvia mspaint ed esce da solo.
Se si desidera nascondere la console, è possibile semplicemente impostare la proprietà "Tipo di output" da "Applicazione console" a "Applicazione Windows" nella scheda "Applicazione" della Proprietà progetto.
codice di esempio:
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;
}
}
}
}
fonte
2009-07-11 08:11:30
nel qual caso devo iniziare a seconda applicazione, sia che si tratti di chiusura modulo o modulo chiuso (prima applicazione) –
Non importa (a meno che non si annulli la chiusura in "Chiusura"), sin Il processo ce viene avviato in modo asincrono e non impedirà alla tua applicazione di continuare a fare qualsiasi cosa si supponga di fare, incluso lo spegnimento. –