ASP.NET Core 应用程序可以使用 .NET Core 的宿主化模型。您可以使用 IHostedService 实现实现长时间运行的后台任务,该服务可以运行在 .NET Core 宿主的进程中。为此,请遵循以下步骤:
1.创建具有 IHostedService 实现的服务类。
示例代码如下:
public class BackgroundService : IHostedService, IDisposable
{
private Timer timer;
public Task StartAsync(CancellationToken cancellationToken)
{
timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
private void DoWork(object state)
{
// Do your long running task here
}
public Task StopAsync(CancellationToken cancellationToken)
{
timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
public void Dispose()
{
timer?.Dispose();
}
}
2.将服务类注册到 ASP.NET Core 应用程序的依赖注入容器中。
示例代码如下:
services.AddSingleton();
3.在应用程序启动时,IHostedService 实现的 StartAsync 方法将被调用。
当应用程序关闭时,IHostedService 实现的 StopAsync 方法将被调用。
您可以在应用程序的 StartUp.cs 文件中注册服务类:
using Microsoft.Extensions.Hosting;
using System.Threading.Tasks;
public class Program
{
public static async Task Main(string[] args)
{
await CreateHostBuilder(args).Build().RunAsync();
}
public static IHostBuilder CreateHostBuilder(string[] args) =>
Host.CreateDefaultBuilder(args)
.ConfigureServices((hostContext, services) =>
{
services.AddHostedService();
});
}
现在,您的 ASP.NET Core Web 项目中已创建了一个后台服务来执行长时间运行的任务。