Dieser Artikel ist ein Spiegelartikel der maschinellen Übersetzung, bitte klicken Sie hier, um zum Originalartikel zu springen.

Ansehen: 6049|Antwort: 4

[Quelle] ASP.NET Core (neunzehn) verwendet BackgroundService, um Hintergrundaufgaben auszuführen

[Link kopieren]
Veröffentlicht am 20.5.2023, 22:51:51 | | | |
Anforderungen: Im Projekt ist eine statische Log-Warteschlange definiert, und jede Anfrage kann Nachrichten in die Warteschlange legen; die Website muss eine Hintergrund-Aufgabe öffnen, um die Nachrichten in dieser Warteschlange zu verarbeiten.

Rezension:

Ein Dienst auf Basis von .NET Core unter Linux
https://www.itsvse.com/thread-9447-1-1.html
IHostedService-Schnittstelle

Die IHostedService-Schnittstelle definiert zwei Methoden für gehostete Objekte:

StartAsync(CancellationToken): Die Logik, die verwendet wird, um Hintergrundaufgaben zu starten.
StopAsync(CancellationToken): Wird ausgelöst, wenn der Host einen normalen Shutdown durchführt, der die Logik enthält, um Hintergrundaufgaben zu beenden.

HintergrundService-Basisklasse

BackgroundService ist die Basisklasse, die zur Implementierung des langlebigen IHostedService verwendet wird, also der Quellcodeadresse:Der Hyperlink-Login ist sichtbar.



Rufen Sie ExecuteAsync(CancellationToken) auf, um den Hintergrunddienst auszuführen. Die Implementierung gibt eine Aufgabe zurück, die die gesamte Lebensdauer des Hintergrunddienstes repräsentiert. Keine anderen Dienste werden gestartet, bis ExecuteAsync asynchron wird, zum Beispiel durch das Aufrufen von await. Vermeiden Sie es, lange blockierende Initialisierungsaufgaben in ExecuteAsync durchzuführen. StopAsync (CancellationToken) wartet darauf, dass ExecuteAsync abgeschlossen ist.

Wir implementieren eine Hintergrundaufgabe, um das Log in einer Schleife auszudrucken, der Code ist wie folgt:

Registrieren Sie sich im Servicedienst mit folgendem Code:

Der Registrierungsmodus ist ein Singleton, wie in der untenstehenden Abbildung gezeigt:



Starte das Projekt mit der Ausgabe wie folgt:



Verwenden Sie einen Scoped Service in einer Hintergrundaufgabe

Um einen scoped Service im BackgroundService zu verwenden, erstellen Sie einen Scope. Standardmäßig werden für verwaltete Dienste keine Scopes erstellt. Wenn Sie direkt einen Konstruktor verwenden, um ein scoped Object einzuspeisen, lautet der Fehler wie folgt:

Unbearbeitete Ausnahme. System.AggregateException: Einige Dienste können nicht erstellt werden (Fehler beim Validieren des Service-Deskriptors 'ServiceType: Microsoft.Extensions.Hosting.IHostedService) Lebenszeit: Singleton-ImplementierungTyp: WebApplication2.Worker.TestServiceHostedService': Kann den scoped Service 'WebApplication2.Worker.User' von singleton nicht konsumieren Microsoft.Extensions.Hosting.IHostedService'.)
Wir müssen den Code wie folgt modifizieren:

Referenz:Der Hyperlink-Login ist sichtbar.

(Ende)





Vorhergehend:OData – OData vs GraphQL
Nächster:LiteDB Embedded Database for .NET Tutorial
 Vermieter| Veröffentlicht am 20.5.2023, 22:52:45 |


Rezension

ASP.NET Core (18) Anpassen Sie einen einfachen OutputCache-Output-Cache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integriert die Leistungsanalyse von MiniProfile-Anwendungen
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (16) Abhängig von der Einspeisung dynamischer Registrierungsdienste
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) verwendet HttpClient, um HTTP-Anfragen zu senden
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (vierzehn) basiert auf dem SkiaSharp-Bild-Captcha
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), um festzustellen, ob es sich um eine Ajax-Anfrage handelt oder nicht
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (zwölf) Frontend-JS, CSS-Bündelung und Kompression
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) Endpunkt-Route fügt Middleware hinzu, um alle DI-Dienste anzuzeigen
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Detaillierte Erklärung der Konfigurationsprioritäten in Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Detaillierte Erklärung der Middleware-Middleware von Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Detaillierte Erklärung der Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET Grube der Standardparameter der Swagger-Benutzeroberfläche in Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Tiefgehende Analyse des Framework-Quellcodes
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI erhält manuell die Methode zum Einschleusen von Objekten
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (fünf) basiert auf CAP-verteilten Transaktionen
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Core(4)-Filter einheitliche ModelState-Modellvalidierung
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (iii) Erstellen Sie Instanzen dynamisch mit ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Die Anwendung per Code neu starten
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) verwendet Redis-Caching
https://www.itsvse.com/thread-9393-1-1.html
 Vermieter| Veröffentlicht am 29.5.2023, 20:29:45 |
Man kann IServiceProvider durch IServiceScopeFactory ersetzen, und es gibt keinen Unterschied zwischen den beiden beim Erstellen von CreateScope.
 Vermieter| Veröffentlicht am 2.8.2023, 19:13:00 |
Ein neuer Timer in .NET 6, PeriodicTimer, wird verwendet
https://www.itsvse.com/thread-10637-1-1.html
 Vermieter| Veröffentlicht am 13.8.2023, 20:13:37 |
StartAsync sollte aufKurzzeitmissionen, weil der Hosting-Dienst istLaufen in der richtigen ReihenfolgeZielKeine anderen Dienste werden gestartet, bis StartAsync vollständig ausgeführt istLangfristige Aufgaben sollten in ExecuteAsync platziert werden

Referenz:Der Hyperlink-Login ist sichtbar.

Verzichtserklärung:
Alle von Code Farmer Network veröffentlichten Software, Programmiermaterialien oder Artikel dienen ausschließlich Lern- und Forschungszwecken; Die oben genannten Inhalte dürfen nicht für kommerzielle oder illegale Zwecke verwendet werden, andernfalls tragen die Nutzer alle Konsequenzen. Die Informationen auf dieser Seite stammen aus dem Internet, und Urheberrechtsstreitigkeiten haben nichts mit dieser Seite zu tun. Sie müssen die oben genannten Inhalte innerhalb von 24 Stunden nach dem Download vollständig von Ihrem Computer löschen. Wenn Ihnen das Programm gefällt, unterstützen Sie bitte echte Software, kaufen Sie die Registrierung und erhalten Sie bessere echte Dienstleistungen. Falls es eine Verletzung gibt, kontaktieren Sie uns bitte per E-Mail.

Mail To:help@itsvse.com