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

据我所知, Application.Restart()重新启动一个应用程序并创建一个新的应用程序实例。 此实例是否会在新流程中创建,或者将使用旧流程?

谢谢你的回答。

它运行在一个新的过程中。 关于是否重用该过程, 文档似乎有点不清楚,但可以通过在启动时在文本框中显示进程ID来validation它。

 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. // ... } 

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

它启动一个新实例。 如果您的原始应用程序仍然运行工作线程,您可能会遇到问题,原始进程可能不会很快被杀死,您最终将同时运行2个实例(将在任务管理器中显示)。