2010-08-20 10 views

risposta

9

Viene eseguito in un nuovo processo. documentation sembra poco chiaro se il processo viene riutilizzato o meno, ma può essere verificato mostrando l'ID di processo in una casella di testo all'avvio.

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(); 
    } 
} 

Inoltre potrai vedere usando .NET Reflector che viene creato un nuovo processo:

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

Sì, è davvero una buona risposta. – Yuriy

4

In base allo documentation verrà avviata una nuova istanza dell'applicazione e quindi un nuovo processo. Se ci fossero argomenti della riga di comando forniti all'avvio dell'applicazione, gli stessi argomenti verranno forniti al nuovo processo.

0

Si inizia una nuova istanza. È possibile che si verifichi un problema in cui, se l'applicazione originale ha ancora thread di lavoro in esecuzione, il processo originale potrebbe non essere eliminato abbastanza presto che si verificheranno due istanze in esecuzione contemporaneamente (che verranno visualizzate nel task manager).

Problemi correlati