2010-10-09 51 views

Respuesta

26

No creo que haya un método directo en WPF como lo hay en WinForms. Sin embargo, se puede usar métodos de la Windowns.Form espacio de nombres de la siguiente manera: (Es posible que deba agregar una referencia al ensamblado System.Windows.Form)

System.Windows.Forms.Application.Restart(); 

System.Windows.Application.Current.Shutdown(); 
3

Usted puede utilizar API de reinicio y recuperación del Windows API Code Pack 's. Solo tenga en cuenta que esta es una API nueva, por lo que solo funcionará en los sistemas operativos actuales (es decir, Windows 7).

+0

También debería funcionar en Vista. –

8

La siguiente es la mejor solución que he encontrado, no es necesario añadir una referencia a System.Windows.Forms, en lugar usted necesita agregar el espacio de nombres System.Diagnostics que ya tiene una referencia a su montaje:

Process.Start(Application.ResourceAssembly.Location); 
Application.Current.Shutdown(); 
+5

Tenga en cuenta que no desea utilizar este método si su aplicación se implementa con ClickOnce. El 'ApplicationDeployment.IsNetworkDeployed' será falso cuando reinicie. Ver http://bit.ly/RKoVBz para más información. Si su aplicación no se implementa con ClickOnce, este método funciona muy bien. – blachniet

+1

@blachniet Además, comenzará la versión * anterior * después de una actualización si usa este método. Este problema también se evita al usar el método de winforms. – John

Cuestiones relacionadas