Обнуление количества попыток

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Добрый день, уважаемые!

Вопрос следующий:
Есть несколько заданий с периодом выполнения каждые 5-15 минут. Возникла проблема в тот момент, когда одно из заданий не успело выполниться за 2 итерации задания, которое выполняется каждые 5 минут, соответственно, в 5 минутном задании количество попыток стало равно 2 и когда поток освободился, оно выполнилось 2 раза, а не 1, как планировалось.
Используется версия Lite, поэтому поток только 1.

Подскажите, как можно реализовать правильно очередь выполнения заданий обнуляя перед каждым запуском количество попыток?
 

mux76

Client
Регистрация
13.12.2010
Сообщения
259
Благодарностей
119
Баллы
43
Вопрос не совсем ясен.
Посмотрите на глобальные переменные
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
задание стоит в очереди, каждые 5 минут прибавляется 1 попытка. Задание простояло в очереди 10 минут, накопилось 2 попытки. Когда начало выполняться задание, которое стояло в очереди, оно выполнилось 2 раза, а не 1.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Самое простое что мне видится, это поставить шаблон выполнятся раз в минуту.
В конце успешного выполнения писать в файл текущее число и дату.
В начале шаблона брать это значение из файла и логикой проверять сколько прошло времени. И в зависимости от этого идти дальше или завершать его.
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Сделал более простой способ.
Количество успехов: 1
Количество неуспехов подряд:1
Планировщик: вкл
Добавлять число попыток: 1
Обнулять количество успехов: true
Повторять каждые: 5 минут
Окончание: без конца
Сколько делать: 0
Потоков: 1
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
я ошибся, вышеуказанные настройки не помогли. Тот вариант, которые вы предлагаете не подходит, так как количество проектов большое, при установке выполнения раз в минуту скопится очередь и количество попыток будет еще больше чем 2.
Смысл в том. что поток 1 и больше не требуется в принципе. Пока выполняется 1 проект, второй стоит в очереди, а первый проект может выполняться более 10 минут, поэтому проект в очереди прибавляет количество попыток до 2-3 и затем выполняется 2-3 раза, а нужно 1.
Планировщик прибавляет количество попыток, можно ли сделать. чтобы он устанавливал значение равным 1 при каждом запуске?

И еще заметил недостаток: отсчет времени до следующего запуска начинается не от времени выполнения проекта, а от его последнего запуска. Получается, что запуск происходит раньше времени.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113
Используйте планировщик windows а в нем bat файлы постера. Сделать bat файл можно по правому клику на шаблоне в постере
 

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Используйте планировщик windows а в нем bat файлы постера. Сделать bat файл можно по правому клику на шаблоне в постере
Не совсем понятно почему нужно изобретать велосипед, чтобы сделать такую мелочь?

Количество попыток я поборол путем апдейта версии с лайт на стандарт.
А вот проблема запуска по времени осталась.
Необходимо установить значение следующего запуска равным: время окончания исполнения проекта + количество минут до следующего запуска.
Посмотрел SetSchedulerSettings , делаю все по шаблону, но настройки не изменяются, может быть нельзя из самого проекта изменять настройки того же проекта, потому что после исполнения проекта планировщик перезаписывает настройки, которые я указал в проекте? Извините за сумбурность.

Если не сложно, поясните как можно используя SetSchedulerSettings, установить необходимое мне время до следующего запуска.
 

rostonix

Известная личность
Регистрация
23.12.2011
Сообщения
29 067
Благодарностей
5 707
Баллы
113

starman

Client
Регистрация
18.04.2016
Сообщения
32
Благодарностей
8
Баллы
8
Код:
var time = DateTime.Now + TimeSpan.FromDays(10);
var str = string.Format("{0}/{1}/{2} {3}:{4}:{5}", time.Month, time.Day, time.Year, time.Hour, time.Minute, time.Second);
var howMuch = 1; // сколько повторять
var settings =
string.Format(
@"<StartDate>{0}</StartDate>
<ShedulerOnDate>{0}</ShedulerOnDate>
<EndDate>{0}</EndDate>
<RepetitionCount>{1}</RepetitionCount>
<ScheduleType>EveryMinutes</ScheduleType>
<RepeatType>FinishAfter</RepeatType>
<ActivateTime>01/01/0001 00:00:00</ActivateTime>
<ActivateWorkTime>01/01/0001 00:00:00</ActivateWorkTime>
<IsActive>True</IsActive>
<NumberOfTries>0</NumberOfTries>
<Minutes>1</Minutes>
<Days>1</Days>
<LastScheduleDate>{0}</LastScheduleDate>
<NextScheduleDate>{0}</NextScheduleDate>
<IsClearSucces>True</IsClearSucces>"
,str, howMuch);
var name = "MultiThread";
ZennoPoster.SetSchedulerSettings(name, settings);

Подскажите, как в этом примере сделать, чтобы у time не обнулялись секунды?
 

Кто просматривает тему: (Всего: 1, Пользователи: 0, Гости: 1)