IHostedService始终创建两个进程

时间:2019-06-26 14:15:02

标签: c# .net .net-core background-service

我正在编写HostedService,并且始终在运行它时,它会创建两次要执行的流程(我检查了日志,并且几乎有两个日志同时出现,每个日志应为5秒钟)。遵循官方文档。

https://docs.microsoft.com/es-es/aspnet/core/fundamentals/host/hosted-services?view=aspnetcore-2.2&tabs=visual-studio

这是我的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>();

1 个答案:

答案 0 :(得分:1)

您应该获得两个不同的线程,Host和HostedService可能会作为同一进程运行两次,具体取决于操作系统和用于检查正在运行的进程的应用程序。