Dit artikel is een spiegelartikel van machinevertaling, klik hier om naar het oorspronkelijke artikel te gaan.

Bekijken: 6049|Antwoord: 4

[Bron] ASP.NET Core (negentien) gebruikt BackgroundService om achtergrondtaken uit te voeren

[Link kopiëren]
Geplaatst op 20-5-2023 22:51:51 | | | |
Vereisten: Er is een statische logwachtrij gedefinieerd in het project, en elk verzoek kan berichten in de wachtrij plaatsen; we hebben de website nodig om een achtergrondtaak te openen om de berichten in deze wachtrij te verwerken.

Recensie:

Een dienst gebaseerd op .NET Core op Linux
https://www.itsvse.com/thread-9447-1-1.html
IHostedService-interface

De IHostedService-interface definieert twee methoden voor gehoste objecten:

StartAsync(CancellationToken): De logica die wordt gebruikt om achtergrondtaken te starten.
StopAsync(CancellationToken): Geactiveerd wanneer de host een normale afsluiting uitvoert, met de logica om achtergrondtaken te beëindigen.

AchtergrondService-basisklasse

BackgroundService is de basisklasse die wordt gebruikt om langlopende IHostedService te implementeren, het broncodeadres:De hyperlink-login is zichtbaar.



Roep ExecuteAsync (CancellationToken) aan om de achtergronddienst uit te voeren. De implementatie geeft een Taak terug die de volledige levensduur van de achtergrondservice vertegenwoordigt. Er worden geen andere services gestart totdat ExecuteAsync asynchroon wordt, bijvoorbeeld door await aan te roepen. Vermijd het uitvoeren van lange blokkerende initialisatietaken in ExecuteAsync. StopAsync(CancellationToken) wacht tot ExecuteAsync voltooid is.

We implementeren een achtergrondtaak om het logboek in een lus af te drukken, de code is als volgt:

Registreer u in de servicedienst met de volgende code:

De registratiemodus is een singleton, zoals weergegeven in de onderstaande figuur:



Begin het project met de volgende output:



Gebruik een scoped service in een achtergrondtaak

Om een scoped service in de BackgroundService te gebruiken, maak je een scope aan. Standaard worden er geen scopes gemaakt voor beheerde diensten. Als je direct een constructor gebruikt om een scoped object te injecteren, is de fout als volgt:

Onbehandelde uitzondering. System.AggregateException: Sommige services kunnen niet worden opgebouwd (Fout bij het valideren van de servicedescriptor 'ServiceType: Microsoft.Extensions.Hosting.IHostedService) Levensduur: Singleton ImplementatieType: WebApplication2.Worker.TestServiceHostedService': Kan de scoped service 'WebApplication2.Worker.User' niet consumeren van singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
We moeten de code als volgt aanpassen:

Referentie:De hyperlink-login is zichtbaar.

(Einde)





Vorig:OData – OData vs GraphQL
Volgend:LiteDB Embedded Database voor .NET tutorial
 Huisbaas| Geplaatst op 20-5-2023 22:52:45 |


recensie

ASP.NET Core (18) Pas een eenvoudige OutputCache outputcache aan
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integreert MiniProfile applicatieprestatie-analyse
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Afhankelijk van injectie van dynamische registratiediensten
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) gebruikt HttpClient om HTTP-verzoeken te verzenden
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (veertien) is gebaseerd op de SkiaSharp-afbeelding captcha
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) om te bepalen of het een Ajax-verzoek is of niet
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (twaalf) front-end JS, CSS-bundling en compressie
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) eindpuntroute voegt middleware toe om alle DI-diensten weer te geven
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Gedetailleerde uitleg van configuratieprioriteiten in Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Gedetailleerde uitleg van de middleware middleware van Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Gedetailleerde uitleg van Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET put van de standaardparameters van de Swagger UI in Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Kern (7) Diepgaande analyse van de broncode van het framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI verkrijgt handmatig de methode om objecten te injecteren
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (vijf) is gebaseerd op CAP-gedistribueerde transacties
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-filter uniforme ModelState-modelvalidatie
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Maakt dynamisch instanties aan met behulp van ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Herstart de applicatie via code
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) gebruikt Redis-caching
https://www.itsvse.com/thread-9393-1-1.html
 Huisbaas| Geplaatst op 29-5-2023 20:29:45 |
Je kunt IServiceProvider vervangen door IServiceScopeFactory, en er is geen verschil tussen de twee bij het aanmaken van CreateScope.
 Huisbaas| Geplaatst op 2 augustus 2023 19:13 |
Er wordt een nieuwe timer in .NET 6 gebruikt, PeriodicTimer,
https://www.itsvse.com/thread-10637-1-1.html
 Huisbaas| Geplaatst op 13-8-2023 20:13:37 |
StartAsync zou beperkt moeten zijn totKortetermijnmissies, omdat de hostingdienst isLoop in volgordedoelEr worden geen andere diensten gestart totdat StartAsync volledig draaitLangetermijntaken moeten in ExecuteAsync worden geplaatst

Referentie:De hyperlink-login is zichtbaar.

Disclaimer:
Alle software, programmeermaterialen of artikelen die door Code Farmer Network worden gepubliceerd, zijn uitsluitend bedoeld voor leer- en onderzoeksdoeleinden; De bovenstaande inhoud mag niet worden gebruikt voor commerciële of illegale doeleinden, anders dragen gebruikers alle gevolgen. De informatie op deze site komt van het internet, en auteursrechtconflicten hebben niets met deze site te maken. Je moet bovenstaande inhoud volledig van je computer verwijderen binnen 24 uur na het downloaden. Als je het programma leuk vindt, steun dan de echte software, koop registratie en krijg betere echte diensten. Als er sprake is van een inbreuk, neem dan contact met ons op via e-mail.

Mail To:help@itsvse.com