Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/256.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/.net/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Application.Restart()是否为应用程序创建新进程?_C#_.net - Fatal编程技术网

C# Application.Restart()是否为应用程序创建新进程?

C# Application.Restart()是否为应用程序创建新进程?,c#,.net,C#,.net,我知道,Application.Restart()重新启动应用程序并创建应用程序的新实例。该实例将在新流程中创建,还是将使用旧流程 感谢您的回答。根据,它将启动应用程序的新实例,从而启动新流程。如果启动应用程序时提供了命令行参数,则这些参数将提供给新进程。它在新进程中运行。对于流程是否被重用似乎有点不清楚,但可以通过在启动时在文本框中显示流程ID来验证 public partial class Form1 : Form { public Form1() { Ini

我知道,
Application.Restart()
重新启动应用程序并创建应用程序的新实例。该实例将在新流程中创建,还是将使用旧流程


感谢您的回答。

根据,它将启动应用程序的新实例,从而启动新流程。如果启动应用程序时提供了命令行参数,则这些参数将提供给新进程。

它在新进程中运行。对于流程是否被重用似乎有点不清楚,但可以通过在启动时在文本框中显示流程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();
    }
}
您还可以看到,使用以下命令创建了一个新流程:

public static void Restart()
{
    // ...
    ExitInternal();            // Causes the application to exit.
    Process.Start(startInfo);  // Starts a new process.
    // ...
}

它启动一个新实例。您可能会遇到这样的问题:如果您的原始应用程序仍在运行工作线程,那么原始进程可能不会很快被终止,从而导致两个实例同时运行(将在任务管理器中显示)