Эта статья является зеркальной статьёй машинного перевода, пожалуйста, нажмите здесь, чтобы перейти к оригиналу.

Вид: 6049|Ответ: 4

[Источник] ASP.NET Core (nineteen) использует BackgroundService для выполнения фоновых задач

[Скопировать ссылку]
Опубликовано 2023-5-20 22:51:51 | | | |
Требования: В проекте определена статическая очередь журнала, и каждый запрос может помещать сообщения в очередь, и нам нужно, чтобы сайт открывал фоновую задачу для обработки сообщений в этой очереди.

Обзор:

Сервис на базе .NET Core на Linux
https://www.itsvse.com/thread-9447-1-1.html
Интерфейс IHostedService

Интерфейс IHostedService определяет два метода для размещенных объектов:

StartAsync(CancellationToken): Логика, используемая для запуска фоновых задач.
StopAsync(CancellationToken): Срабатывает при выполнении обычного выключения хостом, содержащего логику для завершения фоновых задач.

Предыстория Базовый класс службы

BackgroundService — это базовый класс, используемый для реализации долгосрочного IHostedService, исходного кода:Вход по гиперссылке виден.



Вызовите ExecuteAsync(CancellationToken) для запуска фонового сервиса. Реализация возвращает задачу, отражающую весь срок службы фона. Другие сервисы не запускаются до тех пор, пока ExecuteAsync не станет асинхронным, например, при вызове await. Избегайте выполнения длительных задач блокировки инициализации в ExecuteAsync. StopAsync(CancellationToken) ждёт завершения ExecuteAsync.

Мы реализуем фоновую задачу для печати журнала в цикле, код выглядит следующим образом:

Зарегистрируйтесь в сервисе со следующим кодом:

Режим регистрации — синглтон, как показано на рисунке ниже:



Начните проект с результата следующим образом:



Используйте сервис с объёмом в фоновой задаче

Чтобы использовать сервис с областью видимости в BackgroundService, создайте область действия. По умолчанию области управления не создаются. Если вы используете конструктор напрямую для введения объекта с областью видимости, ошибка следующая:

Необработанное исключение. System.AggregateException: Некоторые сервисы нельзя сконструировать (Ошибка при проверке дескриптора сервиса 'ServiceType: Microsoft.Extensions.Hosting.IHostedService Срок жизни: Singleton ImplementationType: WebApplication2.Worker.TestServiceHostedService: Не может использовать ограниченный сервис 'WebApplication2.Worker.User' из singleton ' Microsoft.Extensions.Hosting.IHostedService'.)
Нам нужно изменить код следующим образом:

Ссылка:Вход по гиперссылке виден.

(Конец)





Предыдущий:OData – OData против GraphQL
Следующий:Учебник по встроенной базе данных LiteDB для .NET
 Хозяин| Опубликовано 2023-5-20 22:52:45 |


обзор

ASP.NET Core (18) Настройка простого кэша выхода OutputCache
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET Core (17) интегрирует анализ производительности приложений MiniProfile
https://www.itsvse.com/thread-10571-1-1.html

ASP.NET Ядро (16) Зависит от инъекции динамических регистрационных сервисов
https://www.itsvse.com/thread-10560-1-1.html

ASP.NET Core (XV) использует HttpClient для отправки HTTP-запросов
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET Core (четырнадцать) основана на капче изображения SkiaSharp
https://www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (XIII), чтобы определить, является ли это запросом Ajax
https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (двенадцать) фронтенд JS, объединение CSS и компрессия
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET Маршрут конечной точки Core (XI) добавляет промежуточное ПО для отображения всех сервисов DI
https://www.itsvse.com/thread-10269-1-1.html

ASP.NET Подробное объяснение приоритетов конфигурации в Core(10).
https://www.itsvse.com/thread-10265-1-1.html

ASP.NET Подробное объяснение промежуточного программного обеспечения Core (9).
https://www.itsvse.com/thread-9647-1-1.html

ASP.NET Подробное объяснение Core Middleware
https://www.itsvse.com/thread-8126-1-1.html

ASP.NET яма стандартных параметров интерфейса Swagger в Core(8).
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (7) Глубокий анализ исходного кода фреймворка
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI вручную получает метод введения объектов
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (пять) основана на распределённых транзакциях с CAP
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET Фильтр Core(4) унифицированная валидация модели ModelState
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET Ядро (iii) Динамическое создание экземпляров с помощью ActivatorUtilities
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (2) Перезапустить приложение по коду
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (1) использует кэширование Redis
https://www.itsvse.com/thread-9393-1-1.html
 Хозяин| Опубликовано 29.05.2023 20:29:45 |
Вы можете заменить IServiceProvider на IServiceScopeFactory, и при создании CreateScope между ними нет разницы.
 Хозяин| Опубликовано 2023-8-2 19:13:00 |
В .NET 6 используется новый таймер — PeriodicTimer
https://www.itsvse.com/thread-10637-1-1.html
 Хозяин| Опубликовано 2023-8-13 20:13:37 |
StartAsync должен быть ограниченКраткосрочные миссии, потому что хостинг-сервис являетсяБег по порядкуцельДругие сервисы не запускаются, пока StartAsync не заработает полностьюДолгосрочные задачи следует размещать в ExecuteAsync

Ссылка:Вход по гиперссылке виден.

Отказ:
Всё программное обеспечение, программные материалы или статьи, публикуемые Code Farmer Network, предназначены исключительно для учебных и исследовательских целей; Вышеуказанный контент не должен использоваться в коммерческих или незаконных целях, иначе пользователи несут все последствия. Информация на этом сайте взята из Интернета, и споры по авторским правам не имеют отношения к этому сайту. Вы должны полностью удалить вышеуказанный контент с компьютера в течение 24 часов после загрузки. Если вам нравится программа, пожалуйста, поддержите подлинное программное обеспечение, купите регистрацию и получите лучшие подлинные услуги. Если есть нарушение, пожалуйста, свяжитесь с нами по электронной почте.

Mail To:help@itsvse.com