Ten artykuł jest lustrzanym artykułem tłumaczenia maszynowego, kliknij tutaj, aby przejść do oryginalnego artykułu.

Widok: 6049|Odpowiedź: 4

[Źródło] ASP.NET Core (dziewiętnaście) wykorzystuje BackgroundService do wykonywania zadań w tle

[Skopiuj link]
Opublikowano 2023-5-20 22:51:51 | | | |
Wymagania: W projekcie zdefiniowana jest statyczna kolejka logów, a każde żądanie może umieszczać wiadomości w kolejce, a strona internetowa musi otworzyć zadanie w tle, aby przetworzyć wiadomości w tej kolejce.

Recenzja:

Usługa oparta na .NET Core na Linuksie
https://www.itsvse.com/thread-9447-1-1.html
Interfejs IHostedService

Interfejs IHostedService definiuje dwie metody dla obiektów hostowanych:

StartAsync(CancelToken): Logika używana do uruchamiania zadań w tle.
StopAsync(CancellationToken): Wyzwalany podczas normalnego wyłączania przez hosta, zawierającego logikę do zakończenia zadań w tle.

TłoKlasa bazowa Serwisu

BackgroundService to klasa bazowa używana do implementacji długoletniego IHostedService, czyli adresu kodu źródłowego:Logowanie do linku jest widoczne.



Zadbani ExecuteAsync(CancellationToken), aby uruchomić usługę w tle. Implementacja zwraca zadanie reprezentujące cały okres życia usługi w tle. Żadne inne usługi nie są uruchamiane, dopóki ExecuteAsync nie stanie się asynchroniczny, na przykład przez wywołanie await. Unikaj wykonywania długich zadań inicjalizacyjnych blokujących w ExecuteAsync. StopAsync(CancellationToken) czeka na zakończenie ExecuteAsync.

Implementujemy zadanie w tle, które polega na wydrukowaniu logu w pętli, a kod wygląda następująco:

Zarejestruj się w usłudze serwisowej z następującym kodem:

Tryb rejestracji to singleton, jak pokazano na poniższym rysunku:



Rozpocznij projekt od wyników następującymi:



Użyj usługi o ograniczonym zakresie, w zadaniu w tle

Aby użyć usługi o skali w BackgroundService, należy utworzyć zakres. Domyślnie nie tworzą się zakresów dla usług zarządzanych. Jeśli użyjesz konstruktora bezpośrednio do wstrzyknięcia obiektu z zakresem skalacji, błąd wygląda następująco:

Wyjątek nieobsługiwany. System.AggregateException: Niektóre usługi nie są w stanie zostać zbudowane (Błąd podczas weryfikacji deskryptora usługi 'ServiceType: Microsoft.Extensions.Hosting.IHostedService' Lifetime: Singleton ImplementationType: WebApplication2.Worker.TestServiceHostedService': Nie można korzystać z usługi scope service 'WebApplication2.Worker.User' z singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Musimy zmodyfikować kod w następujący sposób:

Odniesienie:Logowanie do linku jest widoczne.

(Koniec)





Poprzedni:OData – OData kontra GraphQL
Następny:LiteDB Embedded Database for .NET tutorial
 Ziemianin| Opublikowano 2023-5-20 22:52:45 |


recenzja

ASP.NET Core (18) Dostosowanie prostej pamięci wyjściowej OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) integruje analizę wydajności aplikacji MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Rdzeń (16) Zależny od wstrzykiwania dynamicznych usług rejestracyjnych
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) używa HttpClient do wysyłania żądań HTTP
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (czternaście) opiera się na captcha obrazu SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), aby określić, czy jest to żądanie Ajax, czy nie
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (dwanaście) front-end JS, bundling CSS i kompresja
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (XI) trasa końcowa dodaje oprogramowanie pośrednicze do wyświetlania wszystkich usług DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Szczegółowe wyjaśnienie priorytetów konfiguracji w Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Szczegółowe wyjaśnienie middleware Middleware w Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Szczegółowe wyjaśnienie Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET domyślnych parametrów interfejsu Swagger w Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Rdzeń (7) Dogłębna analiza kodu źródłowego frameworka
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI ręcznie uzyskuje metodę wstrzykiwania obiektów
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (pięć) opiera się na rozproszonych transakcjach CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Filtr Core(4) zunifikowany walidacja modelu modelu ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Rdzeń (iii) Dynamicznie twórz instancje za pomocą ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Rdzeń (2) Restart aplikacji za pomocą kodu
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) korzysta z buforowania Redis
https://www.itsvse.com/thread-9393-1-1.html
 Ziemianin| Opublikowano 2023-5-29 20:29:45 |
Możesz zastąpić IServiceProvider IServiceScopeFactory i nie ma różnicy między nimi podczas tworzenia CreateScope.
 Ziemianin| Opublikowano 2023-8-2 19:13:00 |
Nowy timer w .NET 6, PeriodicTimer, jest używany
https://www.itsvse.com/thread-10637-1-1.html
 Ziemianin| Opublikowano 2023-8-13 20:13:37 |
StartAsync powinno być ograniczone doMisje krótkoterminowe, ponieważ usługa hostingowa jestBiegaj w kolejnościcelŻadne inne usługi nie są uruchamiane, dopóki StartAsync nie będzie działać całkowicieZadania długoterminowe powinny być umieszczane w ExecuteAsync

Odniesienie:Logowanie do linku jest widoczne.

Zrzeczenie się:
Całe oprogramowanie, materiały programistyczne lub artykuły publikowane przez Code Farmer Network służą wyłącznie celom edukacyjnym i badawczym; Powyższe treści nie mogą być wykorzystywane do celów komercyjnych ani nielegalnych, w przeciwnym razie użytkownicy ponoszą wszelkie konsekwencje. Informacje na tej stronie pochodzą z Internetu, a spory dotyczące praw autorskich nie mają z nią nic wspólnego. Musisz całkowicie usunąć powyższą zawartość z komputera w ciągu 24 godzin od pobrania. Jeśli spodoba Ci się program, wspieraj oryginalne oprogramowanie, kup rejestrację i korzystaj z lepszych, autentycznych usług. W przypadku naruszenia praw prosimy o kontakt mailowy.

Mail To:help@itsvse.com