我正在编写HostedService,并且始终在运行它时,它会创建两次要执行的流程(我检查了日志,并且几乎有两个日志同时出现,每个日志应为5秒钟)。遵循官方文档。
这是我的HostedService的示例
internal class TimedHostedService : IHostedService, IDisposable
{
private readonly ILogger _logger;
private Timer _timer;
public TimedHostedService(ILogger<TimedHostedService> logger)
{
_logger = logger;
}
public Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Timed Background Service is starting.");
_timer = new Timer(DoWork, null, TimeSpan.Zero,
TimeSpan.FromSeconds(5));
return Task.CompletedTask;
}
private void DoWork(object state)
{
_logger.LogInformation("Timed Background Service is working.");
}
public Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("Timed Background Service is stopping.");
_timer?.Change(Timeout.Infinite, 0);
return Task.CompletedTask;
}
public void Dispose()
{
_timer?.Dispose();
}
}
我将服务添加为:
services.AddHostedService<TimedHostedService>();
答案 0 :(得分:1)
您应该获得两个不同的线程,Host和HostedService可能会作为同一进程运行两次,具体取决于操作系统和用于检查正在运行的进程的应用程序。