2010-08-20 16 views

Respuesta

9

Se ejecuta en un nuevo proceso. El documentation parece no estar claro si el proceso se reutiliza o no, pero se puede verificar mostrando el ID del proceso en un cuadro de texto al inicio.

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

También puede ver usando .NET Reflector que se crea un nuevo proceso:

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

Sí, es una muy buena respuesta. – Yuriy

4

Según el documentation, comenzará una nueva instancia de la aplicación y, por lo tanto, un nuevo proceso. Si se proporcionaron argumentos de línea de comando al iniciar la aplicación, esos mismos argumentos se suministrarán al nuevo proceso.

0

Se inicia una nueva instancia. Podría darse el caso de que si su aplicación original aún tiene hilo de trabajo ejecutándose, el proceso original no se matará lo suficientemente pronto como para terminar teniendo 2 instancias ejecutándose al mismo tiempo (lo que se mostrará en el administrador de tareas).

Cuestiones relacionadas