IHostedService всегда создает два процесса - PullRequest
1 голос
/ 26 июня 2019

Я пишу 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 Ответ

1 голос
/ 26 июня 2019

Вы должны получить два разных потока, Host и HostedService, которые могут отображаться как один и тот же процесс, выполняющийся два раза, в зависимости от ОС и приложения, используемого для проверки запущенных процессов.

...