


最初から Microsoft.Extensions.Hosting の Nuget パッケージが導入されています。

ソースジェネレーターによって、グローバル using が生成され、自動的に参照されます。

次の2ファイルのC#コードが最初から作られます。

Program.cs の 3行目、Host が、モダンな .NET での Generic Host (汎用ホスト) となります。
Generic Host (汎用ホスト) では、DI (依存性の注入) コンテナや、ロギング、設定ファイルの読み書き、実行環境の切り替え、アプリのライフサイクル管理、などの機能を備えています。
常駐系のコンソールアプリ/サービスや、ASP.NET Core の Web アプリ開発の基盤となっています。
Generic Host を構成/設定するための Builder (ビルダー) として、次の2つが用意されています。
IHostBuilder (実装: Host.CreateDefaultBuilder)IHostApplicationBuilder (実装: Host.CreateApplicationBuilder)
Host.CreateApplicationBuilder() メソッドにより、以下の構成がデフォルトで行われます。
GetCurrentDirectory() によって返される絶対パスに、コンテンツルートを設定。DOTNET_ の付いた環境変数や、コマンドライン引数から、ホスト構成を読み込む。appsettings.json や appsettings.{Environment}.json から、アプリの設定を読み込む。Program.cs の 6行目 では、構成ビルダーをビルドすることで、Generic Host の ホスト IHost を生成しています。
Program.cs の 7行目 で、Generic Host アプリを起動しています。
Program.cs の 4行目 では、Worker クラスを、Generic Host でホストされるサービスとして、 DI (依存性の注入)をして登録しています。
AddHostService<T>() メソッドを使うことで、ホストされたサービスとして登録することができます。
BackgroundService 抽象クラスは IHostedService の実装クラスで、開発者が ExecuteTask() メソッドを実装することで、処理の非同期実行と非同期終了の制御を自動で管理してくれるものです。
Worker.cs の 3行目 で、BackgroundService 抽象クラスを継承して Worker クラスを書いています。
Worker.cs の 3行目 の プライマリコンストラクタ 内では、DIコンテナからロギング用のインスタンスを取り出しています。
Worker.cs の 5行目 で、BackgroundService 抽象クラスの ExecuteTask() メソッドを実装しています。

初期コードでは、プロセスがキャンセルを通知されるまでの間ずっと、1秒間に1回、現在の日時をログ出力する処理が記述されています。

※ Ctrl + C で、この常駐稼働プログラムを、終了させることができます。