2010-10-09 40 views

Trả lời

26

Tôi không nghĩ rằng có một phương pháp trực tiếp trong WPF như có trong WinForms. Tuy nhiên, bạn có thể sử dụng phương pháp từ namespace Windowns.Form như thế này: (Bạn có thể cần phải thêm một tham chiếu đến assembly System.Windows.Form)

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

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

Bạn có thể sử dụng Khởi động lại và phục hồi API 's Windows API Code Pack. Chỉ cần lưu ý rằng đây là một API mới, vì vậy nó sẽ chỉ hoạt động trên các hệ điều hành hiện tại (ví dụ: Windows 7).

+0

Nó cũng hoạt động trên Vista. –

8

Sau đây là giải pháp tốt nhất mà tôi tìm thấy, bạn không cần phải thêm một tham chiếu đến System.Windows.Forms, thay vào đó bạn cần thêm không gian tên System.Diagnostics mà bạn đã có một tài liệu tham khảo để lắp ráp của nó:

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

Lưu ý rằng bạn không muốn sử dụng phương pháp này nếu ứng dụng của bạn được triển khai với ClickOnce. 'ApplicationDeployment.IsNetworkDeployed' sẽ là false khi bạn khởi động lại. Xem http://bit.ly/RKoVBz để biết thêm thông tin. Nếu ứng dụng của bạn không được triển khai với ClickOnce, phương pháp này hoạt động tốt. – blachniet

+1

@blachniet Ngoài ra, bạn sẽ bắt đầu phiên bản * cũ * sau khi cập nhật nếu sử dụng phương pháp này. Vấn đề này cũng được tránh khi sử dụng phương pháp winforms. – John

Các vấn đề liên quan