PRN222 - Chương 8: Worker Service và tác vụ nền
Worker Service và tác vụ nền trong PRN222: lớp BackgroundService, interface IHostedService và namespace Microsoft.Extensions.Hosting. Nội dung chương còn gồm override ExecuteAsync, CancellationToken để dừng dịch vụ êm, vòng lặp kết hợp Task.Delay chạy theo chu kỳ, StartAsync và StopAsync, đăng ký worker trong Program.cs, đọc cấu hình từ appsettings.json qua dependency injection, xử lý message hàng đợi và lý do không dùng Task.Run trong controller. Học xong chương này, người học viết được dịch vụ chạy nền theo chu kỳ và dừng êm khi nhận tín hiệu huỷ.
Bắt đầu bằng Chế độ học nếu bạn muốn đáp án và giải thích hiện ngay sau mỗi câu — không bấm giờ, dừng lúc nào cũng được. Chọn Thi thử khi muốn biết mình đang ở đâu: có bấm giờ, chấm điểm ở cuối, và giải thích chỉ mở sau khi nộp.
Luyện tập theo chủ đề này
Câu hỏi của chủ đề
public class Worker : BackgroundService {
protected override Task ExecuteAsync(CancellationToken stoppingToken) {
return Task.CompletedTask;
}
}What is ExecuteAsync?
StartAsync()StopAsync()RunAsync()Execute()IDisposableIWorkerIHostedServiceIControllerControllerBaseBackgroundServiceDbContextViewComponentpublic class EmailWorker : BackgroundService {
protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
while (!stoppingToken.IsCancellationRequested) {
SendEmails();
await Task.Delay(60000, stoppingToken);
}
}
}What does this service do?
Program.csApp.csappsettings.jsonlaunchSettings.jsonSystem.ThreadingMicrosoft.Extensions.HostingMicrosoft.Extensions.LoggingSystem.ServiceProcessbuilder.Services.AddControllers()builder.Services.AddRazorPages()builder.Services.AddMvc()builder.Services.AddViews()IControllerIDbContextIHostedServiceIViewComponentStopAsync()EndAsync()seAsync()ShutdownAsync()Đề có câu hỏi của chủ đề này
4 đề chứa ít nhất một câu thuộc chủ đề — mở đề để làm cả bộ, không chỉ từng câu.