Tento článok je zrkadlovým článkom o strojovom preklade, kliknite sem pre prechod na pôvodný článok.

Pohľad: 6049|Odpoveď: 4

[Zdroj] ASP.NET Core (devätnásť) používa BackgroundService na vykonávanie úloh na pozadí

[Kopírovať odkaz]
Zverejnené 2023-5-20 22:51:51 | | | |
Požiadavky: V projekte je definovaná statická logová fronta a každá požiadavka môže vkladať správy do fronty a potrebujeme, aby webová stránka otvorila úlohu na pozadí na spracovanie správ v tejto fronte.

Revízia:

Služba založená na .NET Core na Linuxe
https://www.itsvse.com/thread-9447-1-1.html
IHostedService rozhranie

Rozhranie IHostedService definuje dve metódy pre hostované objekty:

StartAsync(CancellationToken): Logika používaná na spustenie úloh na pozadí.
StopAsync(CancellationToken): Spustí sa, keď hostiteľ vykoná bežné vypnutie, obsahujúce logiku na ukončenie úloh na pozadí.

Základná trieda Pozadie Služby

BackgroundService je základná trieda používaná na implementáciu dlhotrvajúcej IHostedService, adresy zdrojového kódu:Prihlásenie na hypertextový odkaz je viditeľné.



Zavolajte ExecuteAsync(CancellationToken) na spustenie služby na pozadí. Implementácia vráti úlohu, ktorá reprezentuje celú životnosť služby na pozadí. Žiadne ďalšie služby sa nespustia, kým sa ExecuteAsync nestane asynchrónnym, napríklad volaním await. Vyhnite sa vykonávaniu dlhých blokovacích inicializačných úloh v ExecuteAsync. StopAsync(CancellationToken) čaká na dokončenie ExecuteAsync.

Implementujeme úlohu na pozadí na vytlačenie logu v slučke, kód je nasledovný:

Zaregistrujte sa v službe s nasledujúcim kódom:

Režim registrácie je singleton, ako je znázornené na obrázku nižšie:



Začnite projekt s výstupom nasledovne:



Použite scoped service v úlohe na pozadí

Ak chcete použiť scoped službu v BackgroundService, vytvorte scope. Predvolene sa pre spravované služby nevytvárajú žiadne rozsahy. Ak použijete konštruktor priamo na injektovanie objektu s rozsahom, chyba je nasledovná:

Neriešená výnimka. System.AggregateException: Niektoré služby nie je možné zostaviť (Chyba pri validácii popisu služby 'ServiceType: Microsoft.Extensions.Hosting.IHostedService' Životnosť: Singleton ImplementaTyp: WebApplication2.Worker.TestServiceHostedService': Nemôže spotrebovať scoped service 'WebApplication2.Worker.User' z singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Musíme upraviť kód nasledovne:

Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

(Koniec)





Predchádzajúci:OData – OData vs GraphQL
Budúci:LiteDB Embedded Database for .NET tutoriál
 Prenajímateľ| Zverejnené 2023-5-20 22:52:45 |


revízia

ASP.NET Core (18) Prispôsobiť jednoduchú výstupnú cache OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integruje analýzu výkonu aplikácií MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Jadro (16) Závislé od injekcie dynamických registračných služieb
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) používa HttpClient na odosielanie HTTP požiadaviek
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (štrnásť) je založený na image captcha SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) na určenie, či ide o Ajax požiadavku alebo nie
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dvanásť) front-end JS, CSS bundlovanie a kompresia
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) koncová trasa pridáva middleware na zobrazenie všetkých DI služieb
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Podrobné vysvetlenie priorít konfigurácie v Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Podrobné vysvetlenie middleware middleware v Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Podrobné vysvetlenie Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET z predvolených parametrov používateľského rozhrania Swagger v Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Jadro (7) Hĺbková analýza zdrojového kódu frameworku
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI manuálne získava metódu injektovania objektov
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (päť) je založený na distribuovaných transakciách podľa CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filter zjednotený validácia modelu ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Jadro (iii) Dynamicky vytvárať inštancie pomocou ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Reštartovať aplikáciu pomocou kódu
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) používa Redis caching
https://www.itsvse.com/thread-9393-1-1.html
 Prenajímateľ| Zverejnené 29.5.2023 20:29:45 |
IServiceProvider môžete nahradiť IServiceScopeFactory a pri vytváraní CreateScope medzi nimi nie je žiadny rozdiel.
 Prenajímateľ| Zverejnené 2023-8-2 o 19:13:00 |
Používa sa nový časovač v .NET 6, PeriodicTimer,
https://www.itsvse.com/thread-10637-1-1.html
 Prenajímateľ| Zverejnené 13.8.2023 20:13:37 |
StartAsync by mal byť obmedzený naKrátkodobé misie, pretože hostiteľská služba jeBehajte v poradícieľŽiadne ďalšie služby sa nespustia, kým StartAsync nebeží úplneDlhodobé úlohy by mali byť umiestnené v ExecuteAsync

Referencia:Prihlásenie na hypertextový odkaz je viditeľné.

Vyhlásenie:
Všetok softvér, programovacie materiály alebo články publikované spoločnosťou Code Farmer Network slúžia len na vzdelávacie a výskumné účely; Vyššie uvedený obsah nesmie byť použitý na komerčné alebo nezákonné účely, inak nesú všetky následky používateľmi. Informácie na tejto stránke pochádzajú z internetu a spory o autorské práva s touto stránkou nesúvisia. Musíte úplne vymazať vyššie uvedený obsah zo svojho počítača do 24 hodín od stiahnutia. Ak sa vám program páči, podporte originálny softvér, zakúpte si registráciu a získajte lepšie originálne služby. Ak dôjde k akémukoľvek porušeniu, kontaktujte nás prosím e-mailom.

Mail To:help@itsvse.com