Как я знаю Application.Restart ()
перезапускает приложение и создает новый экземпляр приложения. Будет ли этот экземпляр создан в новом процессе, или будет использован старый процесс?
Спасибо за ответ.
Он запускается в новом процессе. Документация кажется немного неясной относительно того, используется ли процесс повторно, но это можно проверить, указав идентификатор процесса в текстовом поле при запуске.
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.
// ...
}
Согласно документации это приведет к запуску нового экземпляра приложения и, следовательно, нового процесса. Если при запуске приложения были заданы аргументы командной строки, эти же аргументы будут переданы новому процессу.