Перезапуск базовой службы .NET BackgroundService завершается с ошибкой System.OperationCancelledException.C#

Место общения программистов C#
Ответить
Anonymous
 Перезапуск базовой службы .NET BackgroundService завершается с ошибкой System.OperationCancelledException.

Сообщение Anonymous »

Возможно, это неправильное понимание того, как работает BackgroundService по сравнению со старыми реализациями службы Windows с полной платформой, но при попытке вызвать host.StartAsync() после вызова host.StopAsync() StartAsync завершается с ошибкой: System.OperationCanceledException: «Операция была отменена».
Изображение

Program.cs

Код: Выделить всё

IHost host = Host.CreateDefaultBuilder(args)
.ConfigureServices(services => {
services.AddHostedService();
})
.Build();

host.RunAsync();

while (true) {
Thread.Sleep(5000);
await host.StopAsync();
Thread.Sleep(5000);
await host.StartAsync();
}
TestWorker.cs

Код: Выделить всё

public class TestWorker : BackgroundService {
private readonly ILogger _logger;

public TestWorker(ILogger logger) {
_logger = logger;
}

protected override async Task ExecuteAsync(CancellationToken stoppingToken) {
while (!stoppingToken.IsCancellationRequested) {
_logger.LogInformation("Worker running at: {time}", DateTimeOffset.Now);
await Task.Delay(1000, stoppingToken);
}
}
}
Может кто-нибудь объяснить, почему это так и каков правильный способ программного запуска BackgroundService после его программной остановки?


Подробнее здесь: https://stackoverflow.com/questions/793 ... ancelledex
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «C#»