Application.Restart()是否为应用程序创建新进程或没有?

时间:2010-08-20 12:15:18

标签: c# .net

据我所知Application.Restart()重新启动应用程序并创建新的应用程序实例。此实例是在新进程中创建还是使用旧进程?

感谢您的回答。

3 个答案:

答案 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个实例(将在任务管理器中显示)。