この記事は機械翻訳のミラー記事です。元の記事にジャンプするにはこちらをクリックしてください。

眺める: 6049|答える: 4

[出典] ASP.NET Core(19)はBackgroundServiceを使ってバックグラウンドタスクを実行します

[リンクをコピー]
2023年5月20日 22:51:51に投稿 | | | |
要件:プロジェクト内で静的ログキューが定義されており、各リクエストはメッセージをキューに入れることができます。また、ウェブサイトがバックグラウンドタスクを起動してこのキュー内のメッセージを処理する必要があります。

復習:

Linux上の.NET Coreを基盤としたサービス
https://www.itsvse.com/thread-9447-1-1.html
IHostedServiceインターフェース

IHostedServiceインターフェースは、ホストオブジェクトに対して2つのメソッドを定義しています:

StartAsync(CancellationToken):バックグラウンドタスクを開始するために使われるロジックです。
ストップアシンク(CancellationToken):ホストが通常のシャットダウンを実行した際にトリガーされ、バックグラウンドタスクを終了するロジックを含みます。

BackgroundService ベースクラス

BackgroundServiceは、長期間実行されているIHostedServiceを実装するためのベースクラスであり、ソースコードアドレスです:ハイパーリンクのログインが見えます。



ExecuteAsync(CancellationToken)を呼び出してバックグラウンドサービスを実行します。 実装はバックグラウンドサービスの全ライフ期間を表すタスクを返します。 ExecuteAsyncが非同期になるまでは、waitを呼び出すなど、他のサービスは開始されません。 ExecuteAsyncで長時間のブロッキング初期化タスクを行わないでください。 StopAsync(CancellationToken)はExecuteAsyncの完了を待っています。

ログをループで印刷するバックグラウンドタスクを実装しています。コードは以下の通りです:

サービスサービスに登録するには、以下のコードがあります:

登録モードは単一形式で、下図に示されています。



プロジェクトは以下のアウトプットで開始します:



バックグラウンドタスクでスコープ付きのサービスを使う

BackgroundServiceでスコープ付きのサービスを使用するには、スコープを作成します。 デフォルトでは、マネージドサービス用のスコープは作成されません。 もし直接コンストラクタを使ってスコープ対象オブジェクトを注入した場合、エラーは以下の通りです:

未処理例外。 System.AggregateException: 一部のサービスは構築できません(サービス記述子「ServiceType: Microsoft.Extensions.Hosting.IHostedService」の検証中にエラーが発生します) Lifetime: Singleton ImplementationType: WebApplication2.Worker.TestServiceHostedService': singleton ' からスコープ付きのサービス 'WebApplication2.Worker.User' を消費できません Microsoft.Extensions.Hosting.IHostedService'.)
コードは次のように修正する必要があります:

参考:ハイパーリンクのログインが見えます。

(終わり)





先の:OData – OData vs GraphQL
次に:LiteDB Embedded Database for .NET チュートリアル
 地主| 2023年5月20日 22:52:45に投稿 |


復習

ASP.NET コア(18) シンプルなOutputCache出力キャッシュをカスタマイズする
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core(17)はMiniProfileアプリケーションパフォーマンス分析を統合しています
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET コア(16) 動的登録サービスの注入に依存
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core(XV)はHttpClientを使ってHTTPリクエストを送信します
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core(14)はSkiaSharpの画像キャプチャに基づいています
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core(XIII)で、それがAjaxリクエストかどうかを判定します
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET コア(12)フロントエンドJS、CSSバンドル、圧縮
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core(XI)エンドポイントルートは、すべてのDIサービスを表示するためのミドルウェアを追加します
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Core(10)における構成優先度の詳細な説明。
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Core (9)のミドルウェアミドルウェアの詳細な説明。
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET コアミドルウェアの詳細な説明
https://www.itsvse.com/thread-8126-1-1.html

Core(8)のSwagger UIのデフォルトパラメータの穴 ASP.NET。
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET コア(7) フレームワークソースコードの詳細な分析
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DIはオブジェクト注入の方法を手動で取得します
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET コア(5)はCAP分散トランザクションに基づいています
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) フィルター 統一モデルステートモデル検証
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET コア(iii) ActivatorUtilitiesを用いて動的にインスタンスを作成する
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET コア(2) コードによるアプリケーションの再起動
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core(1)はRedisキャッシュを使用しています
https://www.itsvse.com/thread-9393-1-1.html
 地主| 2023年5月29日 20:29:45 に投稿 |
IServiceProviderをIServiceScopeFactoryに置き換えることができ、CreateScopeを作成する際に両者に違いはありません。
 地主| 2023年8月2日 19:13:00 に投稿 |
.NET 6の新しいタイマーであるPeriodicTimerが使用されています
https://www.itsvse.com/thread-10637-1-1.html
 地主| 2023年8月13日 20:13:37 に投稿 |
StartAsyncは以下に限定すべきです短期ミッション、ホスティングサービスは順番通りに進めてくださいターゲットStartAsyncが完全に稼働するまでは他のサービスは起動しません長期的なタスクはExecuteAsyncに配置すべきです

参考:ハイパーリンクのログインが見えます。

免責事項:
Code Farmer Networkが発行するすべてのソフトウェア、プログラミング資料、記事は学習および研究目的のみを目的としています。 上記の内容は商業的または違法な目的で使用されてはならず、そうでなければ利用者はすべての結果を負うことになります。 このサイトの情報はインターネットからのものであり、著作権紛争はこのサイトとは関係ありません。 ダウンロード後24時間以内に上記の内容を完全にパソコンから削除してください。 もしこのプログラムを気に入ったら、正規のソフトウェアを支持し、登録を購入し、より良い本物のサービスを受けてください。 もし侵害があれば、メールでご連絡ください。

Mail To:help@itsvse.com