.NET Core 实现后台任务(定时任务)
0 条评论在 Program.cs(.Net 5 及一下在 Startup.cs)中添加以下配置
//.Net 6
builder.Services.AddHostedService<TestHostedService>();
// .Net 5 及以下
services.AddHostedService<TestHostedService>();
public class TestHostedService : 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)
{
Console.WriteLine($"{DateTime.Now:yyyy-MM-dd HH:mm:ss}");
}
public Task StopAsync(CancellationToken cancellationToken)
{
Console.WriteLine("StopAsync");
return Task.CompletedTask;
}
public void Dispose()
{
_timer?.Dispose();
}
}
应用在运行后,会去执行 StartAsync 函数,应用关闭执行 StopAsync,由于我在这里使用的定时器,所以每过5秒都会执行一次 DoWork 函数