.NET Core Web Api 项目启动自动启动定时器
时间: 2024-01-20 10:01:52 浏览: 29
要在.NET Core Web Api项目启动时自动启动定时器,可以使用.NET Core自带的IHostedService接口。该接口定义了一个后台服务,可以在应用程序启动时自动运行,并在应用程序关闭时自动停止。
以下是一个示例,演示如何在.NET Core Web Api项目启动时自动启动定时器:
1. 创建一个继承自IHostedService的后台服务类,例如TimerService:
```csharp
public class TimerService : IHostedService, IDisposable
{
private Timer _timer;
public Task StartAsync(CancellationToken cancellationToken)
{
// 在此处创建并启动计时器
_timer = new Timer(DoWork, null, TimeSpan.Zero, TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
public Task StopAsync(CancellationToken cancellationToken)
{
// 在此处停止计时器
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
private void DoWork(object state)
{
// 在此处编写定时器执行的任务
}
public void Dispose()
{
_timer?.Dispose();
}
}
```
2. 在Startup类中注册后台服务:
```csharp
public void ConfigureServices(IServiceCollection services)
{
// 注册后台服务
services.AddHostedService<TimerService>();
// 添加其他服务
// ...
}
```
注意:如果您的.NET Core版本较低(例如.NET Core 2.x),则需要在Program.cs文件中手动构建WebHost并启动它:
```csharp
public static void Main(string[] args)
{
CreateWebHostBuilder(args).Build().Run();
}
public static IWebHostBuilder CreateWebHostBuilder(string[] args) =>
WebHost.CreateDefaultBuilder(args)
.ConfigureServices(services =>
{
// 注册后台服务
services.AddHostedService<TimerService>();
})
.UseStartup<Startup>();
```
3. 运行应用程序并验证定时器是否已启动。
这样,每当您启动.NET Core Web Api应用程序时,定时器都会自动启动,并在应用程序关闭时自动停止。