Вы можете использовать .NET Process Class, чтобы запустить процесс, как описали другие люди. Тогда вопрос в том, когда звонить.
В большинстве случаев использование события Form.Closing
или Form.Closed
кажется простым выбором.
Однако, если кто-то другой может обработать событие и установить для CancelEventArgs.Cancel
значение true, это может быть неправильным местом для этого. Кроме того, события Form.Closing
и Form.Closed
не будут вызываться при вызове Application.Exit()
. Я не уверен, будет ли вызвано какое-либо из событий, если произойдут какие-то необработанные исключения. (Кроме того, вы должны решить, хотите ли вы запустить второе приложение в случае Application.Exit()
или любого необработанного исключения).
Если вы действительно хотите убедиться, что второе приложение (App2) запускается после выхода из первого приложения (App1), вы можете подшутить:
- Создать отдельное приложение (App0)
- App0 запускает App1
- App0 ожидает выхода App1 с Process.WaitExit ()
- App0 запускает App2 и завершает работу
Образец консольного приложения, прилагаемого ниже, показывает очень простой случай: мой пример приложения сначала запускает блокнот. Затем, когда выходит блокнот, он запускает mspaint и выходит сам.
Если вы хотите скрыть консоль, вы можете просто установить свойство «Тип вывода» из «Консольное приложение» в «Приложение Windows» на вкладке «Приложение» свойства проекта.
Пример кода:
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;
}
}
}
}