ASP.NET Core で作成したアプリケーションを終了する方法です。
以下の公式ドキュメントに方法が書いてあります。
IHostApplicationLifetime
インターフェイスを使います。
環境
- Visual Studio 2017
- ASP.NET Core 2.2
シャットダウンの実行
シャットダウンを開始したいクラスのコンストラクタで IHostApplicationLifetime
を記述して DI します。
シャットダウンを実行するには、IHostApplicationLifetime
の StopApplication
をコールします。
公式ドキュメントのサンプルそのままですが、以下のような感じです。
public class MyClass
{
private readonly IHostApplicationLifetime _appLifetime;
public MyClass(IHostApplicationLifetime appLifetime)
{
_appLifetime = appLifetime;
}
public void Shutdown()
{
_appLifetime.StopApplication();
}
}
起動時とシャットダウン時の処理を定義する
IHostApplicationLifetime
インターフェイスでは、起動時とシャットダウン時に実行する処理を登録できます。
Startup.cs
の Configure
メソッドで IHostApplicationLifetime
に対して以下のようにメソッドを登録します。
public class Startup
{
public void Configure(
IApplicationBuilder app,
IHostApplicationLifetime appLifetime)
{
appLifetime.ApplicationStarted.Register(OnStarted);
appLifetime.ApplicationStopping.Register(OnStopping);
appLifetime.ApplicationStopped.Register(OnStopped);
}
void OnStarted()
{
// ホストが完全に起動されたときに実行する処理を記述する
}
void OnStopping()
{
// ホストがシャットダウンを行っているときに実行する処理を記述する
}
void OnStopped()
{
// ホストがシャットダウンを完了したときに実行する処理を記述する
}
}