Как автоматически вызвать функцию в API? - PullRequest
0 голосов
/ 08 апреля 2020

Привет всем

Я написал API, используя Asp. Net Core. Я хочу, чтобы функция запускалась автоматически каждые 10 минут. Как я могу сделать такую ​​вещь?

Мне нужна ваша помощь. Заранее спасибо.

public void AutoUpdate()
{
   var startTimeSpan = TimeSpan.Zero;
   var periodTimeSpan = TimeSpan.FromMinutes(10);
   var dbData = _provinceDataDal.GetAll();

   var timer = new System.Threading.Timer((e) =>
   {
     UpdateData(dbData);
   }, null, startTimeSpan, periodTimeSpan);
}

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

Я хочу, чтобы он выполнял свою функцию updateData, указанную выше, в течение 10 минут, не вызывая ее при первом запуске API и снова.

Ответы [ 2 ]

3 голосов
/ 08 апреля 2020

Поскольку asp. net core 2.1 являются фоновыми задачами с размещенными службами.

Сначала настройте службы в Startup

public IServiceProvider ConfigureServices(IServiceCollection services)
{
   //Other DI registrations;

   // Register Hosted Services
   services.AddHostedService<MyServices>();
}

После того, как вы реализуете ExecuteAsyn c метод с кодом того, что вы хотите сделать

    public class MyServices : BackgroundService
    {
        protected override async Task ExecuteAsync(CancellationToken stoppingToken)
        {
            _logger.LogDebug("Starting");

            stoppingToken.Register(() =>
                _logger.LogDebug("Stopping."));

            while (!stoppingToken.IsCancellationRequested)
            {
                _logger.LogDebug($"Working");

                // Your code here

                await Task.Delay(TimeSpan.FromMinutes(1), stoppingToken);
            }

            _logger.LogDebug($"Stopping.");
        }
   }

Больше документации в Microsoft по этой ссылке

1 голос
/ 08 апреля 2020

Вы ищете IHostedService. Пример с таймером вы можете найти здесь - Временные фоновые задачи . Имейте в виду, что во время реализации полезно использовать базовый класс BackgroundService.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...