Prasības: Projektā ir definēta statiska žurnāla rinda, un katrs pieprasījums var ievietot ziņojumus rindā, un mums ir nepieciešams, lai vietne atvērtu fona uzdevumu, lai apstrādātu ziņojumus šajā rindā.
Pārskats:
IHostedService interfeiss
IHostedService interfeiss definē divas metodes viesotiem objektiem:
StartAsync(CancellationToken): loģika, kas tiek izmantota, lai sāktu fona uzdevumus.
StopAsync(CancellationToken): tiek aktivizēts, kad resursdators veic normālu izslēgšanu, kas satur loģiku, lai izbeigtu fona uzdevumus.
BackgroundService pamatklase
BackgroundService ir bāzes klase, ko izmanto, lai ieviestu ilgstošu IHostedService, avota koda adresi:Hipersaites pieteikšanās ir redzama.
Izsauciet ExecuteAsync(CancellationToken), lai palaistu fona pakalpojumu. Implementācija atgriež uzdevumu, kas atspoguļo visu fona pakalpojuma kalpošanas laiku. Citi pakalpojumi netiek startēti, kamēr ExecuteAsync nekļūst asinhrons, piemēram, zvanot gaidīt. Izvairieties no ilgstošas bloķēšanas inicializācijas uzdevumu veikšanas programmā ExecuteAsync. StopAsync(CancellationToken) gaida, līdz ExecuteAsync tiks pabeigts.
Mēs īstenojam fona uzdevumu, lai izdrukātu žurnālu cilpā, kods ir šāds:
Reģistrējieties servisa pakalpojumā ar šādu kodu:
Reģistrācijas režīms ir singleton, kā parādīts zemāk redzamajā attēlā:
Sāciet projektu ar izvadi šādi:
Tvēruma pakalpojuma izmantošana fona uzdevumā
Lai BackgroundService izmantotu tvēruma pakalpojumu, izveidojiet tvērumu. Pēc noklusējuma pārvaldītajiem pakalpojumiem netiek izveidoti tvērumi. Ja izmantojat konstruktoru tieši, lai injicētu tvēruma objektu, kļūda ir šāda:
Neapstrādāts izņēmums. System.AggregateException: dažus pakalpojumus nevar izveidot (kļūda, validējot pakalpojuma deskriptoru 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: WebApplication2.Worker.TestServiceHostedService': Nevar patērēt tvēruma pakalpojumu 'WebApplication2.Worker.User' no singleton ' Microsoft.Extensions.Hosting.IHostedService'.) Mums ir jāmaina kods šādi:
Atsauce:Hipersaites pieteikšanās ir redzama.
(Beigas)
|