Задержка ядра .NET против расписания - PullRequest
0 голосов
/ 27 октября 2018

Я пытаюсь запустить фоновую запланированную задачу (в консольном приложении) через x минут, и я легко могу выполнить ее, используя Task.Delay. Но в чем преимущество использования планировщика заданий?

РЕДАКТИРОВАТЬ : Кстати, у меня нет особых требований, просто хочу понять, почему одно лучше другого. Планировщик заданий требует много кода, так почему же стоит задание планировщика?

Это пример, которому я следую: https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html

1 Ответ

0 голосов
/ 27 октября 2018

Task.Delay делает то, что говорит на жестяной банке, и вот о чем.

Реализация IScheduledTask / IHostedService предоставляет несколько функций.

  1. У вас есть автономный класс, в который могут быть добавлены зависимости для запуска кода в собственной области видимости.
  2. IHostedService предоставляет механизм для плавного отключения.В приложении ASP.NET приложение может быть переработано, у вас нет гарантии, что код, который вы вызываете Task.Delay(1000*60), будет выполнен.Используя решение IScheduledTask, вы реализуете метод StopAsync(), чтобы обеспечить постепенную отмену Задачи.Вы также можете настроить время ожидания отключения конфигурации хоста.

Ваш вопрос касается консольного приложения, и из здесь начиная с .Net Core 2.1 WebHost будет заменен на Generic Host и, следовательно, больше не будет относиться конкретно кASP.NET.

Касательная : У меня есть связанный вопрос Тайм-аут отключения ASP.Net Core 2.0, какие проблемы можно ожидать при использовании очень длительного времени из 2 минут? <- У меня не было проблем с производством за время, превышающее 2 мин. </p>

...