근무 서비스 (보조 역할 서비스) 란 무엇입니까?
.NET 코어 3.0은 새로운 프로젝트 템플릿 노동자 서비스를 추가하고, 당신은 백그라운드 서비스를 장기 실행 쓸 수있는, 쉽게 서비스 윈도우 또는 리눅스 데몬에 배포 할 수 있습니다.
당신은 중국어 버전 vs2019이다 설치하는 경우, 근무 서비스 프로젝트 이름은 보조 역할 서비스가된다.
IHostedService 인터페이스 방법 :
StartAsync은 (CancellationToken은) - 배경 작업을 시작하는 로직을 포함하고 있습니다.
StopAsync (CancellationToken은) - 호스트가 정상적으로 닫을 때 트리거.
BackgroundService 소개
BackgroundService는 장기 실행 IHostedService의 기본 클래스 구현입니다.
자습서
- 작업자 서비스 프로젝트를 만드는 시작
- Program.cs
- Worker.cs
- 의존성 주입 (DI)
- StartAsync BackgroundService 재기록 형, ExecuteAsync, StopAsync 방법
- 메소드의 오버라이드 (override)를 차단 StartAsync, ExecuteAsync, StopAsync 클래스 작업자 스레드를하지 마십시오
- 노동자 서비스 작업자 클래스의 다중 실행
- Windows 서비스로 배포
- 리눅스 데몬으로 배포 실행
케이스 - 타임 백그라운드 작업
사용 Microsoft.Extensions.Hosting 단계; 사용 Microsoft.Extensions.Logging 단계; 사용하여 시스템; 사용 하여 System.Threading 단계; 사용 System.Threading.Tasks 단계; 네임 스페이스 Demo_WorkerService_0320 { 공공 클래스 TimedHostedService : IHostedService,는 IDisposable { 개인 INT의 executionCount = 0 ; 전용 판독 전용 하는 ILogger <TimedHostedService> _logger; 개인 타이머 _timer; 공개 TimedHostedService (ILogger입니다 <TimedHostedService> 로거) { _logger = 로거; } 공공 작업 StartAsync (CancellationToken stoppingToken) { _logger.LogInformation ( " 시간 제한이 서비스가 실행 호스트. " ); _timer = 새로운 타이머 (DoWork, DateTime.Now.Ticks, TimeSpan.Zero, TimeSpan.FromSeconds ( 2 )); 반환 Task.CompletedTask을; } 개인 공극 DoWork ( 대상 주) { VAR의 개수 = Interlocked.Increment ( REF executionCount); _logger.LogInformation ($ "*** 지수 = {수}, 작업 시작 ... *** " ); Thread.sleep를 ( 5 * 1000 ); _logger.LogInformation ($ " *** 지수 = {수}, 전체 작업 *** " ); } 공공 작업 StopAsync (CancellationToken stoppingToken) { _logger.LogInformation ( " 시간 제한 서비스가 중지됩니다 호스팅. " ); _timer ? .Change (Timeout.Infinite, 0 ); 반환 Task.CompletedTask; } 공공 무효 처분 () { _timer ? .Dispose (); } } }
시사
참고 자료
에서 ASP.NET 코어에서 관리 서비스 구현을 사용하여 백그라운드 작업
https://docs.microsoft.com/zh-cn/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-3.1&tabs=visual-studio
Windows 서비스를 만들 수있는 .NET 핵심 노동자 서비스의 사용 또는 리눅스 데몬
https://www.cnblogs.com/OpenCoder/p/12191164.html