Я делаю Net Core 2.0 Application
... В методе startup.cs ConfigureServices
я реализую IHostedService для вызова задачи.
public void ConfigureServices(IServiceCollection services)
{
services.AddSingleton<IHostedService, TimedHostedService>();
}
public class TimedHostedService : IHostedService, IDisposable
{
//private readonly ILogger _logger;
private Timer _timer;
public Task StartAsync(CancellationToken cancellationToken)
{
//_logger.LogInformation("Timed Background Service is starting.");
_timer = new Timer(DoWork, null, TimeSpan.Zero,
TimeSpan.FromSeconds(2));
return Task.CompletedTask;
}
private void DoWork(object state)
{
//go to database
//_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();
}
}
Когда я публикую проект и запускаю его из консоли dotnet Project.dll
, службы выполняются нормально.Но я запускаю его из IIS, поток никогда не освобождается.
Я прочитал этот пост, но не помогает.
Чего мне не хватает?
Спасибо ...