Catalog · How the catalog works
cron-delphi
- ★ 1 on GitHub
Anyone may press Interesting, signed in or not. It helps others find this project.
README
🕒 Delphi Cron Scheduler
Delphi Cron Scheduler — это класс на Delphi, реализующий планировщик заданий, работающий по принципу Unix-cron, а также поддерживающий отложенные разовые задачи. Позволяет выполнять задачи по расписанию: каждую минуту, каждые N минут, в определённое время суток, по дням недели и т.д.
Поддерживает стандартный синтаксис cron-масок (*, */N, A-B, A,B,C, ?), синтаксис разовых задач (+5m, +2h) и многопоточную работу через TThread.
🚀 Возможности
- Поддержка cron-масок формата:
* * * * *каждую минуту
* * * * * → каждую минуту
*/5 * * * * → каждые 5 минут
0 22 * * * → каждый день в 22:00
30 8 * * 1-5 → по будням в 8:30
Формат полей (слева направо): Минуты | Часы | День месяца | Месяц | День недели
-
Разовые отложенные задачи (One-time tasks): Автоматически очищаются из памяти после выполнения.
+30s→ через 30 секунд
+15m→ через 15 минут
+2h→ через 2 часа
+1d→ через 1 день -
Автоматический расчёт следующего времени запуска
-
Работа в отдельном потоке (
TCronThread) -
Событие
OnExecuteвызывается в контексте главного потока (черезTThread.Queue) -
Минимальные зависимости — только стандартная библиотека Delphi
-
Совместимо с Delphi 11.x – Delphi 12+
📦 Установка
- Склонировать репозиторий в Ваш проект
git clone https://git.north-side.ru/suslikstyle/cron-delphi.git. - Добавьте
CronSchedulerвusesвашего модуля, где будет использоваться планировщик. - Создайте экземпляр
TCronThreadи добавьте задачу(и).
🧩 Пример использования
uses
System.SysUtils, Vcl.Dialogs, CronScheduler;
var
FCron: TCronThread;
begin
// Создание планировщика
FCron:= TCronThread.Create;
FCron.OnExecute :=
procedure(Sender: TObject; const TaskName: string)
begin
Writeln(Format('[%s] Выполнено: %s', [TimeToStr(Now), TaskName]));
end;
// Добавление cron-задач
FCron.AddTask('Каждую минуту', '* * * * *');
FCron.AddTask('Каждые 3 минуты', '*/3 * * * *');
FCron.AddTask('Каждые 5 минут', '*/5 * * * *');
FCron.AddTask('Каждый день в 22:00', '0 22 * * *');
// Добавление разовых отложенных задач
FCron.AddTask('Уведомление через 30 секунд', '+30s');
FCron.AddTask('Очистка кеша через 2 часа', '+2h');
Readln; // не даем завершиться
// Завершение работы
FCron.Free; // Автоматически вызовет Stop/Terminate
end.⚙️ Основные классы
TCronTask
Отвечает за:
- хранение cron-маски;
- разбор полей маски (
минуты,часы,дни,месяцы,дни,недели); - расчёт времени следующего выполнения (
GetNextTime).
TCronThread
Поток-планировщик:
- содержит список
TCronTask; - вычисляет ближайшее время выполнения;
- ожидает нужный интервал с помощью события
TEvent, - вызывает
OnExecuteпри наступлении задачи.
📄 Лицензия
Проект распространяется под MIT License.
👨💻 Автор
Delphi Cron Scheduler Автор: Konstantin 📧 Email: suslik.style@gmail.com

