2010-10-09 4 views

Répondre

26

Je ne pense pas qu'il existe une méthode directe dans WPF comme dans WinForms. Cependant, vous pouvez utiliser des méthodes de l'espace de noms Windowns.Form comme ceci: (Vous devrez peut-être ajouter une référence à l'ensemble System.Windows.Form)

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

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

Vous pouvez utiliser l'API de redémarrage et de récupération du Windows API Code Pack. Sachez simplement qu'il s'agit d'une nouvelle API, elle ne fonctionnera donc que sur les systèmes d'exploitation actuels (Windows 7).

+0

Il devrait également fonctionner sur Vista. –

8

Voici la meilleure solution que j'ai trouvé, vous n'avez pas besoin d'ajouter une référence à System.Windows.Forms, au lieu que vous avez besoin d'ajouter l'espace de noms System.Diagnostics qui vous a déjà une référence à son assemblée:

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

Notez que vous ne souhaitez pas utiliser cette méthode si votre application est déployée avec ClickOnce. Le 'ApplicationDeployment.IsNetworkDeployed' sera faux lorsque vous redémarrez. Voir http://bit.ly/RKoVBz pour plus d'informations. Si votre application n'est pas déployée avec ClickOnce, cette méthode fonctionne très bien. – blachniet

+1

@blachniet Aussi, vous commencerez la * vieille * version après une mise à jour si vous utilisez cette méthode. Ce problème est également évité lors de l'utilisation de la méthode winforms. – John

Questions connexes