Автозапуск процесса с определенным интервалом

Добрый день!

Для того, чтобы процесс автоматически запускался раз в N минут, необходимо в процесс поместить элемент Сценарий вида:

string schedulerJobGroupName = "MyProcessGroupMyEmail1";//- Любое имя
string jobProcessName = "UsrProcess"; //- Название процесса
string schedulerJobName = "MyJobNameMyEmail1"; //- Любое имя
int startOffset = 3600; // интервал в секундах
AppScheduler.RemoveJob(schedulerJobName, schedulerJobGroupName);
var job = AppScheduler.CreateProcessJob(schedulerJobName, schedulerJobGroupName, jobProcessName, UserConnection.Workspace.Name, UserConnection.CurrentUser.Name);
var trigger = new SimpleTriggerImpl(schedulerJobName + "Trigger", schedulerJobGroupName, DateTime.UtcNow.AddSeconds(startOffset));
AppScheduler.Instance.ScheduleJob(job, trigger);
return true;

Это работает.

Скажите, пожалуйста, а можно ли сделать так, чтобы он запускался только в определенные часы
(например, с 8.00 до 20.00)

т.е. как можно здесь применить такую формулу ?
Если 20:00 - текущее время T (интервал запуска) то запуск установить в T+12 часов

Нравится

4 комментария

Дарья, добрый день!

Пример использования планировщика в указанном интервале.

string schedulerJobGroupName = "ScheduleTest";
string jobProcessName = "UsrScheduleTest";
string schedulerJobName = "ScheduleTestJob";
TimeSpan start = TimeSpan.Parse("11:31");
TimeSpan end = TimeSpan.Parse("11:46");
TimeSpan currentTime = DateTime.Now.TimeOfDay;

if ((currentTime > start) && (currentTime < end))
{
int startOffset = 30;
AppScheduler.RemoveJob(schedulerJobName, schedulerJobGroupName);
var job = AppScheduler.CreateProcessJob(schedulerJobName, schedulerJobGroupName, jobProcessName, UserConnection.Workspace.Name, UserConnection.CurrentUser.Name);
var trigger = new SimpleTriggerImpl(schedulerJobName + "Trigger", schedulerJobGroupName, DateTime.UtcNow.AddSeconds(startOffset));
AppScheduler.Instance.ScheduleJob(job, trigger);
} else {
int startOffset = 12;
AppScheduler.RemoveJob(schedulerJobName, schedulerJobGroupName);
var job = AppScheduler.CreateProcessJob(schedulerJobName, schedulerJobGroupName, jobProcessName, UserConnection.Workspace.Name, UserConnection.CurrentUser.Name);
var trigger = new SimpleTriggerImpl(schedulerJobName + "Trigger", schedulerJobGroupName, DateTime.UtcNow.AddHours(startOffset));
AppScheduler.Instance.ScheduleJob(job, trigger);
}
return true;

Спасибо

а можно как-то посмотреть, что записано в планировщике? какие задания когда стоят на автозапуске?

Дарья, добрый день!

Вы можете проверить существующие тригера выполнив запрос в БД:
select * from QRTZ_TRIGGERS
select * from QRTZ_SIMPLE_TRIGGERS

Показать все комментарии