1. 定义类实现IHostedService接口
namespace ZgWeb.Service
{
public class AlarmService : IHostedService
{
private Timer _timer1;
private Timer _timer2;
public Task StartAsync(CancellationToken cancellationToken)
{
_timer1 = new Timer(WriteAlarm, null, TimeSpan.Zero, TimeSpan.FromSeconds(3));
_timer2 = new Timer(WriteSql, null, TimeSpan.Zero, TimeSpan.FromSeconds(3));
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
_timer1?.Dispose();
return Task.CompletedTask;
}
public void WriteAlarm(object state){
...
}
public void WriteSql(object state){
...
}
}
}
2. 在Startup.cs的ConfigureServices方法中添加该服务
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHostedService, AlarmService>();
}
3. 服务注意事项
- 服务会从项目启动开始一直运行
- 服务中的数据一般是从缓存中拿的
- 服务对数据库进行操作时,应将所有数据压进队列或集合再进行统一操作