Как запустить один экземпляр BackgroundService?C#

Место общения программистов C#
Ответить
Anonymous
 Как запустить один экземпляр BackgroundService?

Сообщение Anonymous »

У меня есть BackgroundService, который мне нужно запускать каждые 4 часа. У меня сложилось впечатление, что он будет запускать только один экземпляр. Недавно я заметил некоторые дублирующиеся данные, и оказалось, что мой BackgroundService запускает несколько экземпляров, и каждый экземпляр кажется изолированным, например, не может обмениваться информацией о состоянии.
У меня это так HostedService в стартовом файле:

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

services.AddHostedService();
Пример фоновой службы:

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

  public class MyBackgroundTask : BackgroundService
{

protected override async Task ExecuteAsync(CancellationToken stoppingToken)
{

await Task.Yield();

while (!stoppingToken.IsCancellationRequested)
{

try
{
// do some calculations

await Task.Delay(TimeSpan.FromHours(4), stoppingToken);
}
catch (Exception e)
{

continue;
}

}
}
}
Я пробовал добавить его как синглтон, но, похоже, он не выполняется при загрузке. Посоветуйте, что мне следует попробовать?

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

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

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

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

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

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