IHostedService 总是创建两个进程
IHostedService always create two processes
我正在编写一个 HostedService 并且总是在我 运行 它时,它创建了两次要执行的进程(我检查了日志并且有两个几乎同时应该是 5 secondos each)我已经遵循了官方文档。
这是我的 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>();
您应该得到两个不同的线程,Host 和 HostedService,它们可能会显示为同一进程 运行 两次,具体取决于 OS 和用于检查 运行 的应用程序进程。
我正在编写一个 HostedService 并且总是在我 运行 它时,它创建了两次要执行的进程(我检查了日志并且有两个几乎同时应该是 5 secondos each)我已经遵循了官方文档。
这是我的 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>();
您应该得到两个不同的线程,Host 和 HostedService,它们可能会显示为同一进程 运行 两次,具体取决于 OS 和用于检查 运行 的应用程序进程。