在ASP.NET Core中运行后台任务有多种方式,以下是其中一种常见的解决方法:
using System;
using System.Threading;
using System.Threading.Tasks;
using Microsoft.Extensions.Hosting;
using Microsoft.Extensions.Logging;
public class BackgroundTask : BackgroundService
{
private readonly ILogger _logger;
public BackgroundTask(ILogger logger)
{
_logger = logger;
}
protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{
while (!stoppingToken.IsCancellationRequested)
{
// 执行后台任务的逻辑
_logger.LogInformation("后台任务正在运行...");
// 每隔一定时间执行一次任务
await Task.Delay(TimeSpan.FromHours(1), stoppingToken);
}
}
}
using Microsoft.AspNetCore.Builder;
using Microsoft.AspNetCore.Hosting;
using Microsoft.Extensions.DependencyInjection;
using Microsoft.Extensions.Hosting;
public class Startup
{
public void ConfigureServices(IServiceCollection services)
{
services.AddHostedService();
}
public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
{
// 配置其他中间件
}
}
这是一种简单的方法,您可以根据自己的需求进行更复杂的后台任务逻辑处理。