Šis straipsnis yra veidrodinis mašininio vertimo straipsnis, spauskite čia norėdami pereiti prie originalaus straipsnio.

Rodinys: 6049|Atsakyti: 4

[Šaltinis] "ASP.NET Core" (devyniolika) naudoja "BackgroundService" foninėms užduotims vykdyti

[Kopijuoti nuorodą]
Paskelbta 2023-5-20 22:51:51 | | | |
Reikalavimai: Projekte yra apibrėžta statinė žurnalo eilė, ir kiekviena užklausa gali įdėti pranešimus į eilę, ir mums reikia, kad svetainė atidarytų foninę užduotį, kad galėtume apdoroti pranešimus šioje eilėje.

Peržiūra:

Paslauga, pagrįsta ".NET Core" sistemoje "Linux".
https://www.itsvse.com/thread-9447-1-1.html
IHostedService sąsaja

"IHostedService" sąsaja apibrėžia du nuomojamų objektų metodus:

StartAsync(CancellationToken): logika, naudojama foninėms užduotims paleisti.
StopAsync(CancellationToken): suaktyvinamas, kai pagrindinis kompiuteris atlieka įprastą išjungimą, kuriame yra logika, kaip užbaigti fonines užduotis.

"BackgroundService" bazinė klasė

"BackgroundService" yra bazinė klasė, naudojama ilgai veikiančiai "IHostedService" įdiegti, šaltinio kodo adresas:Hipersaito prisijungimas matomas.



Iškvieskite ExecuteAsync(CancellationToken), kad paleistumėte foninę paslaugą. Įgyvendinimas pateikia užduotį, kuri nurodo visą foninės tarnybos gyvavimo laiką. Jokios kitos paslaugos nepaleidžiamos, kol "ExecuteAsync" netampa asinchroninė, pvz., skambinant laukti. Venkite ilgų blokavimo inicijavimo užduočių "ExecuteAsync". StopAsync(CancellationToken) laukia, kol bus baigtas ExecuteAsync.

Mes įgyvendiname foninę užduotį, kad atspausdintume žurnalą kilpoje, kodas yra toks:

Užsiregistruokite aptarnavimo tarnyboje naudodami šį kodą:

Registracijos režimas yra viengubas, kaip parodyta paveikslėlyje žemiau:



Pradėkite projektą su išvestimi taip:



Aprėpties tarnybos naudojimas foninėje užduotyje

Norėdami naudoti aprėptį "BackgroundService", sukurkite aprėptį. Pagal numatytuosius nustatymus valdomoms tarnyboms nesukuriama jokia aprėptis. Jei naudojate konstruktorių tiesiogiai, kad įterptumėte aprėptį objektą, klaida yra tokia:

Neapdorota išimtis. System.AggregateException: kai kurių tarnybų neįmanoma sukurti (klaida tikrinant paslaugos aprašą "ServiceType: Microsoft.Extensions.Hosting.IHostedService" Trukmė: Singleton ImplementationType: WebApplication2.Worker.TestServiceHostedService': Negalima naudoti aprėpties tarnybos 'WebApplication2.Worker.User' iš singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Turime pakeisti kodą taip:

Nuoroda:Hipersaito prisijungimas matomas.

(Pabaiga)





Ankstesnis:OData – OData vs GraphQL
Kitą:"LiteDB Embedded Database for .NET" pamoka
 Savininkas| Paskelbta 2023-5-20 22:52:45 |


Peržiūra

ASP.NET branduolys (18) Tinkinkite paprastą "OutputCache" išvesties talpyklą
https://www.itsvse.com/thread-10583-1-1.html

"ASP.NET Core" (17) integruoja "MiniProfile" programų našumo analizę
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Priklauso nuo dinaminės registracijos paslaugų įvedimo
https://www.itsvse.com/thread-10560-1-1.html

"ASP.NET Core" (XV) naudoja "HttpClient" HTTP užklausoms siųsti
https://www.itsvse.com/thread-10311-1-1.html

"ASP.NET Core" (keturiolika) yra pagrįstas "SkiaSharp" vaizdo captcha
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), kad nustatytų, ar tai yra "Ajax" prašymas, ar ne
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dvylika) priekinės dalies JS, CSS susiejimas ir glaudinimas
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) galinio taško maršrutas prideda tarpinę programinę įrangą, kad būtų rodomos visos DI paslaugos
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Išsamus konfigūracijos prioritetų paaiškinimas branduolyje [10].
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Išsamus "Core" tarpinės programinės įrangos paaiškinimas (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Išsamus "Core Middleware" paaiškinimas
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Swagger vartotojo sąsajos numatytųjų parametrų duobę Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Išsami sistemos šaltinio kodo analizė
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI rankiniu būdu gauna objektų įpurškimo būdą
https://www.itsvse.com/thread-9595-1-1.html

"ASP.NET Core" (penki) yra pagrįstas BŽŪP paskirstytais sandoriais
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4) filtro vieningas ModelState modelio tikrinimas
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Dinamiškai kurkite egzempliorius naudodami "ActivatorUtilities"
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Iš naujo paleiskite programą pagal kodą
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) naudoja Redis talpyklą
https://www.itsvse.com/thread-9393-1-1.html
 Savininkas| Publikuota: 2023-5-29 20:29:45 |
IServiceProvider galite pakeisti IServiceScopeFactory, o kuriant CreateScope tarp jų nėra jokio skirtumo.
 Savininkas| Publikuota: 2023-8-2 19:13:00 |
Naudojamas naujas .NET 6 laikmatis "PeriodicTimer"
https://www.itsvse.com/thread-10637-1-1.html
 Savininkas| Publikuota: 2023-8-13 20:13:37 |
"StartAsync" turėtų apsiribotiTrumpalaikės misijos, nes prieglobos paslauga yraVykdyti eilės tvarkaTikslinėsJokios kitos paslaugos nepaleidžiamos, kol StartAsync visiškai neveikiaIlgalaikės užduotys turėtų būti patalpintos į "ExecuteAsync"

Nuoroda:Hipersaito prisijungimas matomas.

Atsakomybės apribojimas:
Visa programinė įranga, programavimo medžiaga ar straipsniai, kuriuos skelbia Code Farmer Network, yra skirti tik mokymosi ir mokslinių tyrimų tikslams; Aukščiau nurodytas turinys negali būti naudojamas komerciniais ar neteisėtais tikslais, priešingu atveju vartotojai prisiima visas pasekmes. Šioje svetainėje pateikiama informacija gaunama iš interneto, o ginčai dėl autorių teisių neturi nieko bendra su šia svetaine. Turite visiškai ištrinti aukščiau pateiktą turinį iš savo kompiuterio per 24 valandas nuo atsisiuntimo. Jei jums patinka programa, palaikykite autentišką programinę įrangą, įsigykite registraciją ir gaukite geresnes autentiškas paslaugas. Jei yra kokių nors pažeidimų, susisiekite su mumis el. paštu.

Mail To:help@itsvse.com