Cet article est un article miroir de traduction automatique, veuillez cliquer ici pour accéder à l’article original.

Vue: 6049|Répondre: 4

[Source] ASP.NET Core (dix-neuf) utilise BackgroundService pour exécuter des tâches en arrière-plan

[Copié le lien]
Publié le 20-05-2023 à 22:51:51 | | | |
Exigences : Une file de journal statique est définie dans le projet, et chaque requête peut y placer des messages, et nous avons besoin que le site ouvre une tâche en arrière-plan pour traiter les messages de cette file.

Révision:

Un service basé sur .NET Core sous Linux
https://www.itsvse.com/thread-9447-1-1.html
Interface IHostedService

L’interface IHostedService définit deux méthodes pour les objets hébergés :

StartAsync(CancellationToken) : La logique utilisée pour lancer les tâches en arrière-plan.
StopAsync(CancellationToken) : Déclenché lorsque l’hôte effectue un arrêt normal, contenant la logique pour terminer les tâches en arrière-plan.

Classe de base BackgroundService

BackgroundService est la classe de base utilisée pour implémenter l’IHostedService de longue date, l’adresse du code source :La connexion hyperlientérée est visible.



Appelez ExecuteAsync(CancellationToken) pour exécuter le service en arrière-plan. L’implémentation renvoie une tâche qui représente toute la durée de vie du service en arrière-plan. Aucun autre service n’est lancé tant qu’ExecuteAsync ne devient pas asynchrone, par exemple en appelant await. Évitez d’effectuer de longues tâches d’initialisation de blocage dans ExecuteAsync. StopAsync (CancellationToken) en attente de la fin d’ExecuteAsync.

Nous implémentons une tâche en arrière-plan pour imprimer le journal dans une boucle, le code est le suivant :

Inscrivez-vous dans le service de service avec le code suivant :

Le mode d’enregistrement est un singleton, comme montré dans la figure ci-dessous :



Commencez le projet avec la sortie suivante :



Utiliser un service à portée de portée dans une tâche en arrière-plan

Pour utiliser un service à portée dans le BackgroundService, créez un périmètre. Par défaut, aucun scope n’est créé pour les services gérés. Si vous utilisez un constructeur directement pour injecter un objet à portée de corps, l’erreur est la suivante :

Exception non traitée. System.AggregateException : Certains services ne peuvent pas être construits (Erreur lors de la validation du descripteur de service 'ServiceType : Microsoft.Extensions.Hosting.IHostedService Durée de vie : Singleton Implémentation Type : WebApplication 2.Worker.TestServiceHostedService : Impossible de consommer le service à portée portée 'WebApplication2.Worker.User' depuis singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Nous devons modifier le code comme suit :

Référence:La connexion hyperlientérée est visible.

(Fin)





Précédent:OData – OData vs GraphQL
Prochain:Tutoriel de base de données embarquée LiteDB pour .NET
 Propriétaire| Publié le 20-05-2023 à 22:52:45 |


révision

ASP.NET Core (18) Personnaliser un cache de sortie OutputCache simple
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) intègre l’analyse de performance des applications MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Dépendant de l’injection de services d’enregistrement dynamiques
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) utilise HttpClient pour envoyer des requêtes HTTP
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (quatorze) est basé sur le captcha d’image SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) pour déterminer s’il s’agit d’une requête Ajax ou non
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (douze) front-end JS, regroupement CSS et compression
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET route de terminaison Core (XI) ajoute un middleware pour afficher tous les services DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Explication détaillée des priorités de configuration dans Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Explication détaillée du middleware Middleware de Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Explication détaillée du Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET piège des paramètres par défaut de l’interface Swagger dans Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Analyse approfondie du code source du framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET DI Core (VI) obtient manuellement la méthode d’injection d’objets
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinq) est basé sur les transactions distribuées CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Validation unifiée du modèle ModelState filtre Core(4)
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Créer dynamiquement des instances à l’aide d’ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Redémarrer l’application par code
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utilise la mise en cache Redis
https://www.itsvse.com/thread-9393-1-1.html
 Propriétaire| Publié le 29-05-2023 à 20:29:45 |
Vous pouvez remplacer IServiceProvider par IServiceScopeFactory, et il n’y a aucune différence entre les deux lors de la création de CreateScope.
 Propriétaire| Publié le 2023-8-2 à 19:13:00 |
Un nouveau minuteur en .NET 6, PeriodicTimer, est utilisé
https://www.itsvse.com/thread-10637-1-1.html
 Propriétaire| Publié le 13-08-2023 à 20:13:37 |
StartAsync devrait être limité àMissions à court terme, car le service d’hébergement estExécutez dans l’ordrecibleAucun autre service n’est lancé tant que StartAsync n’est pas complètement exécutéLes tâches à long terme doivent être placées dans ExecuteAsync

Référence:La connexion hyperlientérée est visible.

Démenti:
Tous les logiciels, supports de programmation ou articles publiés par Code Farmer Network sont uniquement destinés à l’apprentissage et à la recherche ; Le contenu ci-dessus ne doit pas être utilisé à des fins commerciales ou illégales, sinon les utilisateurs assumeront toutes les conséquences. Les informations sur ce site proviennent d’Internet, et les litiges de droits d’auteur n’ont rien à voir avec ce site. Vous devez supprimer complètement le contenu ci-dessus de votre ordinateur dans les 24 heures suivant le téléchargement. Si vous aimez le programme, merci de soutenir un logiciel authentique, d’acheter l’immatriculation et d’obtenir de meilleurs services authentiques. En cas d’infraction, veuillez nous contacter par e-mail.

Mail To:help@itsvse.com