架构师_程序员_码农网

Имя пользователя Получить пароль
Регистрация

QQ登录

Всего один шаг, чтобы начать

Поиск
Просмотров:2374|Ответов: 4
打印 上一主题 下一主题

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

[Копировать ссылку] ASP.NET Core (XIX) Использование BackgroundService для запуска фоновых задач
ASP.NET Core (XIX) использование BackgroundService для запуска фоновых задач
Поднимайте прямо к 跳转到指定楼层
владелец
发表于 2023-5-20 22:51:51|只看该作者回帖奖励|Реверсивныйпросмотр|Режим чтения
Требование: В проекте определена статическая очередь логирования, каждый запрос может поместить сообщение в очередь, нам нужно, чтобы сайт открывал фоновую задачу для обработки сообщений в этой очереди.

Обзор:

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

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

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

Базовый класс BackgroundService

BackgroundService - это базовый класс IHostedService, который используется для реализации долгоиграющего IHostedService, адрес исходного кода: https: //source.dot.net/#Microsoft.Extensions.Hosting.Abstractions/. BackgroundService.cs



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

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

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

Режим регистрации - один экземпляр, как показано ниже:



Запускаем проект и получаем следующий результат:



Использование скопированных сервисов в фоновых задачах

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

System.AggregateException: Some services are not able to be constructed (Error while validating the service descriptor ' ServiceType: Microsoft.Extensions.Hosting.IHostedService Lifetime: Singleton ImplementationType: WebApplication2.Worker. TestServiceHostedService': Cannot consume scoped service 'WebApplication2.Worker.User' from singleton 'Microsoft.Extensions.Hosting. IHostedService').
Нам нужно изменить код следующим образом:

Ссылка: https: //learn.microsoft.com/zh-cn/aspnet/core/fundamentals/host/hosted-services

(Окончание)





Предыдущая: OData - OData vs GraphQL
Следующая: .NET嵌入式数据库 LiteDB 教程
Код фермерской сети, публикуется только в процессе практики, столкнувшись с техническими трудностями, не вводите в заблуждение других.
джимми чубс
владелец|发表于 2023-5-20 22:52:45|只看该作者


Обзор

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

ASP.NET Core (xvii) Интеграция анализа производительности приложения MiniProfile
h ttps:// www.itsvse.com/thread-10571-1-1.html

ASP.NET Core (xvi) Dependency Injection - динамическая регистрация сервисов
h ttps:// www.itsvse.com/thread-10560-1-1.html

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

ASP.NET Core (xiv) SkiaSharp - CAPTCHA на основе изображений
h ttps:// www.itsvse.com/thread-10287-1-1.html

ASP.NET Core (xiii) Определение того, является ли запрос Ajax-запросом
ASP.NET Core (xiii) Определение того, является ли запрос Ajax-запросом https://www.itsvse.com/thread-10284-1-1.html

ASP.NET Core (xii) Упаковка и сжатие JS, CSS на переднем плане
h ttps:// www.itsvse.com/thread-10282-1-1.html

ASP.NET Core (xi) Маршрутизация конечных точек Добавление промежуточного ПО для отображения всех DI-сервисов
h ttps:// www.itsvse.com/thread-10269-1-1.html

ASP.NET Core (x) Детализация приоритета конфигурации
h ttps:// www.itsvse.com/thread-10265-1-1.html

ASP.NET Core (IX) детали промежуточного ПО
h ttps:// www.itsvse.com/thread-9647-1-1.html

Подробное объяснение ASP.NET Core (Middleware) промежуточного ПО
h ttps:// www.itsvse.com/thread-8126-1-1.html

ASP.NET Core (8) - Яма параметров по умолчанию Swagger UI
h ttps:// www.itsvse.com/thread-9640-1-1.html

ASP.NET Core (VII) - Глубокое погружение в исходный код фреймворка
h ttps:// www.itsvse.com/thread-9601-1-1.html

ASP.NET Core (VI) DI Ручное получение инжектируемых объектов
h ttps:// www.itsvse.com/thread-9595-1-1.html

ASP.NET Core (V) Распределенные транзакции на основе CAP
h ttps:// www.itsvse.com/thread-9593-1-1.html

ASP.NET Core (IV) фильтр унифицированной проверки модели ModelState
h ttps:// www.itsvse.com/thread-9589-1-1.html

ASP.NET Core (III) Использование ActivatorUtilities для динамического создания экземпляров
h ttps:// www.itsvse.com/thread-9488-1-1.html

ASP.NET Core (II) Самостоятельный перезапуск приложений с помощью кода
h ttps:// www.itsvse.com/thread-9480-1-1.html

ASP.NET Core (I) Использование кэша Redis
h ttps:// www.itsvse.com/thread-9393-1-1.html
Код Фармера, публикуется только в процессе практики, столкнувшись с техническими трудностями, не вводите в заблуждение других.
сапоги угги продажа
Скамейки
楼主|发表于 2023-5-29 20:29:45|只看该作者
Вы можете заменить IServiceProvider на IServiceScopeFactory, разницы между ними в создании CreateScope нет.
Код фермерский сетевой, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
Я не уверен, что вы сможете это сделать.
половицы
楼主|发表于 2023-8-2 19:13:00|只看该作者
Использование нового таймера PeriodicTimer в .
h ttps:// www.itsvse.com/thread-10637-1-1.html
NET, публикуется только в процессе практики, возникли технические трудности, не вводите в заблуждение других.
Ответить ЗаПротив

Отчет

сапоги угги продажа
5#
楼主|发表于 2023-8-13 20:13:37|只看该作者
StartAsync следует использовать только для краткосрочных задач, поскольку управляемые службы запускаются последовательно и никакие другие службы не запускаются до завершения работы StartAsync. Долгосрочные задачи следует помещать в ExecuteAsync.

Ссылка: https: //github.com/dotnet/runtime/blob/main/src/libraries/Microsoft.Extensions.Hosting.Abstractions/src/BackgroundService.cs

Coder.com, опубликовано только в процессе практики, возникли технические трудности, не вводите других в заблуждение.
Ответить ЗаПротив

Отчет

Вы должны войти в систему, прежде чем сможете отправлять сообщения назад Войти | Зарегистрироваться

Эта версия интегральных правил


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

Почта To:help@itsvse.com

QQ| ( 鲁ICP备14021824号-2)|Sitemap

GMT+8, 2024-9-19 06:05

Быстрый ответНазад к началуНазад к списку