Követelmények: A projektben egy statikus naplósor van definiálva, és minden kérés üzeneteket tehet a sorba, és szükségünk van a weboldalnak, hogy háttérfeladatot nyisson fel az üzenetek feldolgozásához ebben a sorban.
Szemle:
IHostedService interfész
Az IHostedService interfésze két módszert határoz meg a hosztolt objektumok számára:
StartAsync(CancellationToken): A háttérfeladatok indításához használt logika.
StopAsync(CancellationToken): Akkor aktiválódik, amikor a gazda normál leállítást hajt végre, amely tartalmazza a háttérfeladatok befejezésére szolgáló logikát.
Háttér Szolgáltatási alaposztály
A BackgroundService az alaposztály, amelyet a hosszú ideig futó IHostedService megvalósításához használnak, a forráskód címe:A hiperlink bejelentkezés látható.
Hívd a ExecuteAsync (CancellationToken) parancsot a háttérszolgáltatás futtatására. A megvalósítás egy Feladatot ad vissza, amely a háttérszolgáltatás teljes élettartamát képviseli. Más szolgáltatások nem indulnak, amíg az ExecuteAsync aszinkronná nem válik, például az await hívásával. Kerüld el a hosszú blokkoló inicializációs feladatokat az ExecuteAsync-ben. StopAsync (CancellationToken) várja, amíg az ExecuteAsync befejeződik.
Háttérfeladatot valósítunk meg, hogy a naplót egy ciklusban kinyomtatjuk, a kód a következő:
Regisztráljon a szolgáltatási szolgáltatásban a következő kóddal:
A regisztrációs mód egy-egy egyes, ahogy az alábbi ábrán látható:
Kezdjük a projektet a következő kimenetelekkel:
Használj egy scoped szolgáltatást egy háttérfeladatban
A BackgroundService keretében történő scoped szolgáltatás használatához hozz létre egy scope-t. Alapértelmezés szerint nem hoznak létre scope-okat menedzselt szolgáltatásokhoz. Ha közvetlenül egy konstruktorral szülekezetes objektumot injektálsz, a hiba a következő:
Kezeletlen kivétel. System.AggregateException: Néhány szolgáltatás nem lehet felépíteni (hiba a 'ServiceType: Microsoft.Extensions.Hosting.IHostedService szolgáltatás-leírás validálásakor' Élettartam: Singleton ImplementációTípus: WebApplication2.Worker.TestServiceHostedService': Nem tudja használni a 'WebApplication2.Worker.User' scope-szolgáltatást az Singletonból Microsoft.Extensions.Hosting.IHostedService'.) A kódot a következőképpen kell módosítanunk:
Utalás:A hiperlink bejelentkezés látható.
(Vége)
|