이 글은 기계 번역의 미러 문서이며, 원본 기사로 바로 이동하려면 여기를 클릭해 주세요.

보기: 6049|회답: 4

[출처] ASP.NET 코어(19)는 백그라운드 작업을 실행하기 위해 BackgroundService를 사용합니다

[링크 복사]
2023-5-20 22:51:51에 게시됨 | | | |
요구사항: 프로젝트에는 정적 로그 큐가 정의되어 있으며, 각 요청은 큐에 메시지를 입력할 수 있습니다. 또한 이 큐의 메시지를 처리하기 위해 웹사이트가 백그라운드 작업을 열어야 합니다.

복습:

리눅스에서 .NET 코어를 기반으로 한 서비스
https://www.itsvse.com/thread-9447-1-1.html
IHostedService 인터페이스

IHostedService 인터페이스는 호스팅 객체에 대해 두 가지 방법을 정의합니다:

StartAsync(CancellationToken): 백그라운드 작업을 시작하는 데 사용된 로직입니다.
스톱어싱크(CancellationToken): 호스트가 일반 종료 시 백그라운드 작업을 종료하는 로직을 포함할 때 트리거됩니다.

BackgroundService 기본 클래스

BackgroundService는 장기 실행 IHostedService를 구현하는 데 사용되는 기본 클래스이며, 소스 코드 주소는 다음과 같습니다:하이퍼링크 로그인이 보입니다.



ExecuteAsync(CancellationToken)를 호출해 백그라운드 서비스를 실행하세요. 구현은 백그라운드 서비스의 전체 수명을 나타내는 Task를 반환합니다. ExecuteAsync가 비동기적이 될 때까지는 다른 서비스가 시작되지 않습니다. 예를 들어 wait를 호출하는 경우입니다. ExecuteAsync에서 긴 블로킹 초기화 작업을 피하세요. StopAsync(CancellationToken)는 ExecuteAsync 완료를 기다리고 있습니다.

로그를 반복해서 출력하는 백그라운드 작업을 구현했으며, 코드는 다음과 같습니다:

다음 코드로 서비스 서비스에 등록하세요:

등록 모드는 아래 그림에서 보듯이 싱글턴입니다:



프로젝트를 출력물로 시작하면 다음과 같습니다:



백그라운드 작업에서 스코프 서비스를 사용하세요

BackgroundService에서 스코프가 지정된 서비스를 사용하려면 스코프를 생성하세요. 기본적으로 관리형 서비스에 대한 범위는 생성되지 않습니다. 만약 직접 스코프가 적용된 객체를 주입하기 위해 생성자를 사용한다면, 오류는 다음과 같습니다:

처리되지 않은 예외. System.AggregateException: 일부 서비스는 구축할 수 없습니다 (서비스 디스크립터 'ServiceType: Microsoft.Extensions.Hosting.IHostedService' 검증 중 오류 발생) Lifetime: Singleton 구현 유형: WebApplication2.Worker.TestServiceHostedService': singleton '에서 범위가 부여된 서비스 'WebApplication2.Worker.User'를 사용할 수 없습니다 Microsoft.Extensions.Hosting.IHostedService'.)
코드를 다음과 같이 수정해야 합니다:

참조:하이퍼링크 로그인이 보입니다.

(끝)





이전의:OData – OData 대 GraphQL
다음:LiteDB .NET 임베디드 데이터베이스 튜토리얼
 집주인| 2023-5-20 22:52:45에 게시됨 |


복습

ASP.NET 코어 (18) 간단한 OutputCache 출력 캐시를 커스터마이즈하기
https://www.itsvse.com/thread-10583-1-1.html

ASP.NET 코어(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 코어(XV)는 HTTP 요청을 보낼 때 HttpClient를 사용합니다
https://www.itsvse.com/thread-10311-1-1.html

ASP.NET 코어(14)는 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 코어(12개) 프론트엔드 JS, CSS 번들링, 압축
https://www.itsvse.com/thread-10282-1-1.html

ASP.NET 코어(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 코어 미들웨어에 대한 상세한 설명
https://www.itsvse.com/thread-8126-1-1.html

Core(8) Swagger UI 기본 매개변수의 ASP.NET 구멍입니다.
https://www.itsvse.com/thread-9640-1-1.html

ASP.NET 핵심 (7) 프레임워크 소스 코드에 대한 심층 분석
https://www.itsvse.com/thread-9601-1-1.html

ASP.NET 코어(VI) DI는 객체 주입 방식을 수동으로 획득합니다
https://www.itsvse.com/thread-9595-1-1.html

ASP.NET 코어(다섯 개)는 CAP 분산 트랜잭션을 기반으로 합니다
https://www.itsvse.com/thread-9593-1-1.html

ASP.NET 코어(4) 필터 통합 모델스테이트 모델 검증
https://www.itsvse.com/thread-9589-1-1.html

ASP.NET 코어 (iii) ActivatorUtilities를 사용하여 동적으로 인스턴스를 생성합니다
https://www.itsvse.com/thread-9488-1-1.html

ASP.NET 코어 (2) 코드로 애플리케이션을 재시작함
https://www.itsvse.com/thread-9480-1-1.html

ASP.NET 코어(1)는 Redis 캐싱을 사용합니다
https://www.itsvse.com/thread-9393-1-1.html
 집주인| 2023-5-29 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