2017-06-10 12 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

this.close();に入れることができるはずのアプリケーションがWPFであるとき、私は)(Application.Current.Shutdownを呼び出すことができる方法はありますか?

実行時に利用可能なApplicationオブジェクトがあるかどうかだけをチェック:

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

Application.CurrentApplicationオブジェクトを返す場合、あなたはあなたのコードは、WPFアプリケーションのコンテキストで実行されることを想定することができますし、安全にできました方法はShutdownです。

+0

タイプまたは名前空間を取得しようとしたときに、System.Windowに 'Application'が存在しません。 –

+0

私はPresentationFrameworkとWindowsBaseへの参照を追加しました。ありがとうございました。 –

0

あなただけのWPFクラス

+0

コードはクラスライブラリにありますので、this.close ) 働くでしょう。 –

関連する問題