Questo articolo è un articolo speculare di traduzione automatica, clicca qui per saltare all'articolo originale.

Vista: 6049|Risposta: 4

[Fonte] ASP.NET Core (diciannove) utilizza BackgroundService per eseguire task in background

[Copiato link]
Pubblicato il 20-5-2023 22:51:51 | | | |
Requisiti: Nel progetto viene definita una coda di log statica, e ogni richiesta può inserire messaggi nella coda, e abbiamo bisogno che il sito aprisca un task in background per elaborare i messaggi in questa coda.

Recensione:

Un servizio basato su .NET Core su Linux
https://www.itsvse.com/thread-9447-1-1.html
Interfaccia IHostedService

L'interfaccia IHostedService definisce due metodi per gli oggetti ospitati:

StartAsync(CancellationToken): La logica usata per avviare i compiti in background.
StopAsync(CancellationToken): Attivato quando l'host effettua uno spegnimento normale, contenente la logica per terminare i compiti in background.

BackgroundClasse base di servizio

BackgroundService è la classe base utilizzata per implementare l'IHostedService di lunga durata, l'indirizzo del codice sorgente:Il login del link ipertestuale è visibile.



Chiama ExecuteAsync(CancellationToken) per eseguire il servizio in background. L'implementazione restituisce un Task che rappresenta l'intera durata del servizio in background. Nessun altro servizio viene avviato finché ExecuteAsync non diventa asincrono, ad esempio chiamando await. Evita di eseguire lunghi compiti di inizializzazione bloccanti in ExecuteAsync. StopAsync (CancellationToken) in attesa che ExecuteAsync si completi.

Implementiamo un compito in background per stampare il log in un ciclo, il codice è il seguente:

Registrati nel servizio di servizio con il seguente codice:

La modalità di registrazione è singleton, come mostrato nella figura sottostante:



Inizia il progetto con l'output come segue:



Usa un servizio con ambito in un compito in background

Per utilizzare un servizio con scopo nell'BackgroundService, crea un scopo. Per impostazione predefinita, non vengono creati scope per i servizi gestiti. Se usi direttamente un costruttore per iniettare un oggetto con scopo, l'errore è il seguente:

Eccezione non risolta. System.AggregateException: Alcuni servizi non possono essere costruiti (Errore durante la validazione del descrittore di servizio 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Durata: Singleton ImplementazioneTipo: WebApplication2.Worker.TestServiceHostedService': Non può consumare il servizio scoped 'WebApplication2.Worker.User' da singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Dobbiamo modificare il codice come segue:

Riferimento:Il login del link ipertestuale è visibile.

(Fine)





Precedente:OData – OData vs GraphQL
Prossimo:Tutorial sul LiteDB Embedded Database per .NET
 Padrone di casa| Pubblicato il 20-5-2023 22:52:45 |


recensione

ASP.NET Core (18) Personalizza una semplice cache di uscita OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integra l'analisi delle prestazioni delle applicazioni MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Dipendente dall'iniezione di servizi di registrazione dinamica
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) utilizza HttpClient per inviare richieste HTTP
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (quattordici) si basa sul captcha dell'immagine SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII) per determinare se si tratta di una richiesta Ajax o meno
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dodici) front-end JS, bundle CSS e compressione
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET percorso endpoint Core (XI) aggiunge middleware per visualizzare tutti i servizi DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Spiegazione dettagliata delle priorità di configurazione in Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Spiegazione dettagliata del middleware Middleware di Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Spiegazione dettagliata del Middleware Core
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET fosso dei parametri predefiniti dell'interfaccia di Swagger in Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Analisi approfondita del codice sorgente del framework
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI ottiene manualmente il metodo di iniezione degli oggetti
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (cinque) si basa sulle transazioni distribuite CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtro Core(4) validazione unificata del modello ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Creare dinamicamente istanze usando ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Riavvia l'applicazione tramite codice
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) utilizza la cache Redis
https://www.itsvse.com/thread-9393-1-1.html
 Padrone di casa| Pubblicato il 29-05-2023 alle 20:29:45 |
Puoi sostituire IServiceProvider con IServiceScopeFactory, e non c'è differenza tra i due quando crei CreateScope.
 Padrone di casa| Pubblicato il 2023-8-2 19:13:00 |
Viene utilizzato un nuovo timer in .NET 6, PeriodicTimer,
https://www.itsvse.com/thread-10637-1-1.html
 Padrone di casa| Pubblicato il 13-08-2023 20:13:37 |
StartAsync dovrebbe essere limitato aMissioni a breve termine, perché il servizio di hosting èEseguite in ordinebersaglioNessun altro servizio viene avviato finché StartAsync non è completamente in esecuzioneI compiti a lungo termine dovrebbero essere inseriti in ExecuteAsync

Riferimento:Il login del link ipertestuale è visibile.

Disconoscimento:
Tutto il software, i materiali di programmazione o gli articoli pubblicati dalla Code Farmer Network sono destinati esclusivamente all'apprendimento e alla ricerca; I contenuti sopra elencati non devono essere utilizzati per scopi commerciali o illegali, altrimenti gli utenti dovranno sostenere tutte le conseguenze. Le informazioni su questo sito provengono da Internet, e le controversie sul copyright non hanno nulla a che fare con questo sito. Devi eliminare completamente i contenuti sopra elencati dal tuo computer entro 24 ore dal download. Se ti piace il programma, ti preghiamo di supportare software autentico, acquistare la registrazione e ottenere servizi autentici migliori. In caso di violazione, vi preghiamo di contattarci via email.

Mail To:help@itsvse.com