Как запустить только один экземпляр задания NCron в любое время
Я исследую NCron, который будет использоваться в качестве хоста планировщика для запуска нескольких заданий sftp. Есть ли способ ограничить выполнение задания, если уже запущен существующий экземпляр? Я прошел через вики, но не могу найти никаких подробностей по этому вопросу.
1 ответ
Обеспечение того, чтобы задание не выполнялось несколько раз параллельно, может быть выполнено путем переноса тела Execute()
метод в lock
блок. Однако из-за характера lock
Это означает, что выполнение заданий, о которых идет речь, ставится в очередь, что может или не может быть тем, что вы хотите.
Если вы предпочитаете, чтобы выполнение задания было пропущено, когда задание уже запущено, это можно решить с помощью static bool
и немного lock
, if
а также try
, Вот первая и непроверенная попытка создания базового класса для таких заданий: https://gist.github.com/schourode/7639291
Я хотел бы получить отзывы об этом эксперименте. В случае успеха это вполне может сделать его сборкой ядра NCron.