BackgroundService
IHostedServiceの書きやすい実装補助となる抽象クラスで、長く走る本体をExecuteAsyncに書ける。
- 概念URI
https://comcomponent.com/knowledge/backgroundservice/
- 別名・表記
- BackgroundService クラス
- 最終確認日
- 2026-08-01
- 機械可読データ
- JSON-LD
この概念が関わる関係
- BackgroundServiceはChannel<T>に対する本記事の推奨です。Channelに積んだ仕事を順番に処理する専用コンシューマは、アプリの起動・停止に寿命を合わせられるBackgroundServiceに置くことが推奨される / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはIHostedServiceの実装を担います。BackgroundServiceはIHostedServiceを実装した抽象クラスで、ExecuteAsync(CancellationToken)を1つオーバーライドするだけで常駐ループを書ける / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはIHostedServiceの実装を担います。BackgroundServiceはIHostedServiceの実装を簡略化する基底クラスで、ExecuteAsyncを介して常駐処理を書く / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはIServiceScopeFactoryを前提とします。BackgroundServiceには既定のscopeがないため、scopedサービスを使うにはIServiceScopeFactoryで明示的にscopeを作る必要がある / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはHosted Service (IHostedService)の実装を担います。BackgroundServiceはIHostedServiceの書きやすい実装補助で、長く走る本体をExecuteAsyncに書けるようにする。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはPeriodicTimerを利用します。ExecuteAsyncの本体で一定間隔の周期処理を書く場合、PeriodicTimerを使う。メッセージ待ち受けや外部イベント駆動など周期処理でないBackgroundServiceには使わない。 / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはCancellationToken(.NET)を利用します。ExecuteAsyncはstoppingTokenを最初から最後まで通し、停止合図を受け取ってループを抜ける。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはChannel<T>を利用します。順番付きのバックグラウンド後処理は、投げっぱなしより寿命と上限を管理しやすいChannel<T>とBackgroundServiceの組み合わせで実装できる。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceは依存性注入(DI)を利用します。BackgroundServiceはコンストラクター注入でIServiceScopeFactoryやloggerなどのDIサービスを受け取り、scopedな依存には毎回scopeを切る。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceは.NET(Core以降)を前提とします。BackgroundServiceはMicrosoft.Extensions.Hostingパッケージとして.NET(Core以降)のうえで提供される。 / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- PeriodicTimerはBackgroundServiceに対する本記事の推奨です。worker/BackgroundServiceでasyncな定期処理を書きたい場合、まずPeriodicTimerが本記事の推奨である / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはEnvironment.Exitを前提とします。BackgroundServiceの親ループが想定外例外で落ちたとき、Windowsサービスとして動かす場合は0以外の終了コードでのEnvironment.Exitによる終了を前提とする。StopApplicationだけではSCMにSERVICE_STOPPEDが報告され回復操作が走らないため / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはWindowsサービスの実装を担います。BackgroundServiceはWindowsサービスとしてホストされる常駐ワーカーの実装を担う.NET Generic Hostの基底クラスである / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- catch (Exception)での握りつぶしはBackgroundServiceと両立しません。1件ずつ処理するループでcatch (Exception)を使うと想定外例外まで飲み込んでしまい、親ループであるBackgroundService側が想定外例外を検知して終了する設計と両立しない。この非互換は、この飲み込みがBackgroundServiceの親ループへ届く経路上で起きる場合に限られる / 確度: 条件付きの関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはGeneric Hostを利用します。BackgroundServiceは.NET Generic Host上でホストされたサービスとして動作する / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceは.NET(Core以降)を利用します。BackgroundServiceは.NET(Core以降)のクラスライブラリとして提供される / 確度: 確立した関係 / 確認日: 2026-08-01 出典
- BackgroundServiceはBackgroundServiceExceptionBehavior.StopHostの原因になることがあります。.NET 6以降、BackgroundServiceのExecuteAsyncから漏れた未処理例外は既定でホストを停止させるStopHostの動作を引き起こす / 確度: 確立した関係 / 確認日: 2026-08-01 出典
この概念を扱う記事
一次資料
このページはサイトの知識グラフ(_data/knowledge/)から自動生成されています。誤りの指摘はお問い合わせからお願いします。