Создает ли Application.Restart () новый процесс для приложения или нет?

Как я знаю Application.Restart () перезапускает приложение и создает новый экземпляр приложения. Будет ли этот экземпляр создан в новом процессе, или будет использован старый процесс?

Спасибо за ответ.

6
задан Yuriy 20 August 2010 в 12:15
поделиться

2 ответа

Он запускается в новом процессе. Документация кажется немного неясной относительно того, используется ли процесс повторно, но это можно проверить, указав идентификатор процесса в текстовом поле при запуске.

public partial class Form1 : Form
{
    public Form1()
    {
        InitializeComponent();
    }

    private void button1_Click(object sender, EventArgs e)
    {
        Application.Restart();
    }

    private void Form1_Load(object sender, EventArgs e)
    {
        textBox1.Text = Process.GetCurrentProcess().Id.ToString();
    }
}

Вы также можете увидеть, используя .NET Reflector , что создается новый процесс:

public static void Restart()
{
    // ...
    ExitInternal();            // Causes the application to exit.
    Process.Start(startInfo);  // Starts a new process.
    // ...
}
9
ответ дан 8 December 2019 в 18:29
поделиться

Согласно документации это приведет к запуску нового экземпляра приложения и, следовательно, нового процесса. Если при запуске приложения были заданы аргументы командной строки, эти же аргументы будут переданы новому процессу.

4
ответ дан 8 December 2019 в 18:29
поделиться