据我所知Application.Restart()
重新启动应用程序并创建新的应用程序实例。此实例是在新进程中创建还是使用旧进程?
感谢您的回答。
答案 0 :(得分:9)
它在一个新进程中运行。 documentation似乎有点不清楚该流程是否可以重复使用,但可以通过在启动时在文本框中显示流程ID来验证。
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.
// ...
}
答案 1 :(得分:4)
根据documentation,它将启动应用程序的新实例,从而启动新进程。如果在启动应用程序时提供了命令行参数,则会将相同的参数提供给新进程。
答案 2 :(得分:0)
它启动一个新实例。你可能遇到问题,如果你的原始应用程序仍然运行工作线程,原始进程可能不会很快被杀死,你最终将同时运行2个实例(将在任务管理器中显示)。