2010-08-20 47 views

回答

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

是的,這是一個非常好的答案。 – Yuriy 2010-08-20 12:21:34

4

根據documentation它將啓動一個新的應用程序實例,從而新的過程。如果在啓動應用程序時提供了命令行參數,那麼相同的參數將被提供給新進程。

0

它啓動一個新的實例。如果您的原始應用程序仍然有工作線程正在運行,您可能會遇到問題,原始進程可能不會很快被殺死,您將最終同時運行兩個實例(將顯示在任務管理器中)。

相關問題