Nõuded: Projektis on määratletud staatiline logijärjekord ning iga päring võib panna sõnumeid järjekorda ning meil on vaja, et veebileht avaks taustaülesande, et töödelda selle järjekorra sõnumeid.
Läbivaatamine:
IHostedService liides
IHostedService liides määratleb majutatud objektide jaoks kaks meetodit:
StartAsync(CancellationToken): Loogika, mida kasutatakse taustaülesannete käivitamiseks.
StopAsync(CancellationToken): Käivitub, kui host sooritab tavapärase väljalülitamise, mis sisaldab loogikat taustaülesannete lõpetamiseks.
Taust Teenistuse baasklass
BackgroundService on baasklass, mida kasutatakse pikaajalise IHostedService rakenduseks, lähtekoodi aadressiks:Hüperlingi sisselogimine on nähtav.
Kutsu ExecuteAsync (CancellationToken), et käivitada taustateenus. Rakendus tagastab ülesande, mis esindab kogu taustateenuse eluiga. Teisi teenuseid ei käivitata enne, kui ExecuteAsync muutub asünkroonseks, näiteks kutsudes ootama. Väldi pikki blokeerivaid initsialiseerimisülesandeid ExecuteAsyncis. StopAsync (CancellationToken) ootab ExecuteAsync lõppu.
Me rakendame taustaülesande, et logi tsüklisse printida, kood on järgmine:
Registreeru teenindusteenuses järgmise koodiga:
Registreerimisrežiim on singleton, nagu alloleval joonisel näidatud:
Alusta projekti tulemustega järgmiselt:
Kasuta ulatusega teenust taustaülesandes
Scope-teenuse kasutamiseks BackgroundService'is loo scope. Vaikimisi ei loo hallatavate teenuste jaoks mingeid ulatusi. Kui kasutad konstruktorit otse skoopitud objekti süstimiseks, on viga järgmine:
Lahendamata erand. System.AggregateException: Mõningaid teenuseid ei saa konstrueerida (viga teenuse kirjelduse 'ServiceType: Microsoft.Extensions.Hosting.IHostedService valideerimisel Eluaeg: Singleton Rakendustüüp: WebApplication2.Worker.TestServiceHostedService': Ei saa kasutada scope-teenust 'WebApplication2.Worker.User' singletonilt ' Microsoft.Extensions.Hosting.IHostedService'.) Me peame koodi muutma järgmiselt:
Viide:Hüperlingi sisselogimine on nähtav.
(Lõpp)
|