.NET Core Delay vs Schedule

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

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

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

Разве это не зависит от вашего варианта использования?

Llama 27.10.2018 17:56

@John Нет, у меня нет особых требований, просто хочу понять, почему один лучше другого.

Tico 27.10.2018 17:58

Случайно вы можете дать ссылку или дать пример кода задачи планировщика. Я не знаком с этим, и быстрый поиск в Google не дал мне очевидного результата.

ttugates 27.10.2018 18:06

@ttugates, пожалуйста, посмотрите этот пример: blog.maartenballiauw.be/post/2017/08/01/…

Tico 27.10.2018 18:07
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
4
299
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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 Shutdown Timeout, какие проблемы я могу ожидать, используя очень долгое время из 2 минут? <- у меня не было никаких проблем в производстве с тайм-аутом 2 мин.

Другие вопросы по теме