2017-06-10 84 views
-1

我創建了一個自動更新應用程序的類庫。它需要在完成下載更新時終止該應用程序。目前,我通過使用下面的代碼來確定要使用的退出方法。從庫中爲當前應用程序調用適當的退出方法?

if (Application.MessageLoop) 
{ 
    Application.Exit(); 
} 
else 
{ 
    Environment.Exit(0); 
} 

我知道Environment.Exit(0)是殺應用程序殘酷的方式,當應用程序使用CefSharp它不會殺死應用。當應用程序是WPF時,有什麼辦法可以調用Application.Current.Shutdown()嗎?

如果您不明白該問題,則可以使用以下URL查看問題並完成項目。

https://github.com/ravibpatel/AutoUpdater.NET/issues/11

+0

那麼爲什麼你不能調用Application.Current.Shutdown? – Evk

+0

@Evk \t 該庫使用WinForms,如果使用該庫的主應用程序是WPF應用程序,我需要從庫中調用Application.Current.Shutdown –

回答

1

有什麼辦法,我可以叫Application.Current.Shutdown()當應用程序是WPF?和

if (System.Windows.Application.Current != null) //if WPF 
    System.Windows.Application.Current.Shutdown(); 

如果Application.Current返回一個Application對象,你可以假設你的代碼在WPF應用程序的上下文中執行就可以放心:

只是檢查是否有任何Application對象在運行時可用請撥打Shutdown方法。

+0

我收到類型或名稱空間當我嘗試這樣做時,System.Window中不存在'Application'。 –

+0

我添加了對PresentationFramework和WindowsBase的引用,它工作正常。謝謝。 –

0

你應該能夠只是把this.close();在WPF類

+0

代碼位於類庫中,因此我不認爲this.close( ) 將工作。 –

相關問題