Я пытаюсь запустить фоновую запланированную задачу (в консольном приложении) через x минут, и я могу легко выполнить ее с помощью Task.Delay
. Но в чем преимущество использования планировщика заданий?
РЕДАКТИРОВАТЬ: Кстати, у меня нет особых требований, просто хочу понять, почему одно лучше другого. Планировщик задач требует большого количества кода, так почему же стоит задача планировщика?
Это пример, за которым я следую: https://blog.maartenballiauw.be/post/2017/08/01/building-a-scheduled-cache-updater-in-aspnet-core-2.html
@John Нет, у меня нет особых требований, просто хочу понять, почему один лучше другого.
Случайно вы можете дать ссылку или дать пример кода задачи планировщика. Я не знаком с этим, и быстрый поиск в Google не дал мне очевидного результата.
@ttugates, пожалуйста, посмотрите этот пример: blog.maartenballiauw.be/post/2017/08/01/…
Task.Delay
делает то, что написано на банке, и все.
Реализация IScheduledTask
/ IHostedService
предоставляет несколько функций.
IHostedService
предоставляет механизм плавного завершения работы. В приложении ASP.NET приложение может быть переработано, у вас нет гарантии, что код, который вы вызвали Task.Delay(1000*60)
, будет выполнен. В решении IScheduledTask
вы реализуете метод StopAsync()
, чтобы обеспечить плавную отмену задачи. Вы также можете настроить тайм-аут выключения конфигурации хоста.Ваш вопрос касается консольного приложения, и, похоже, из здесь с .Net Core 2.1 WebHost будет заменен на Generic Host и, как таковой, больше не будет относиться конкретно к ASP.NET.
Касательная: у меня есть связанный с этим вопрос ASP.Net Core 2.0 Shutdown Timeout, какие проблемы я могу ожидать, используя очень долгое время из 2 минут? <- у меня не было никаких проблем в производстве с тайм-аутом 2 мин.
Разве это не зависит от вашего варианта использования?