Проект планирует сам себя

  • Автор темы Автор темы Bullet
  • Дата начала Дата начала

Bullet

Client
Регистрация
16.12.2015
Сообщения
185
Реакции
19
Баллы
18
Всем привет!

Разбираюсь с методом SetSchedulerSettings. Необходимо, чтобы проект поставил сам себя в расписание, используя переменное значение отсрочки в минутах (берем из проекта из переменной WaitTime). Написал следующую конструкцию:

var datetime = DateTime.Now.AddMinutes(project.Variables["WaitTime"].Value).ToString(DD.MM.YYYY hh:mm:ss);//беру текущие дату/время в нужном формате

var settings =
@"<StartDate>"+datetime+"</StartDate>
<EndDate>"+datetime+"</EndDate>
<RepetitionCount>1</RepetitionCount>
<ScheduleType>EveryMinutes</ScheduleType>
<RepeatType>FinishAfter</RepeatType>
<ActivateTime>"+datetime+"</ActivateTime>
<ActivateWorkTime>"+datetime+"</ActivateWorkTime>
<IsActive>True</IsActive>
<NumberOfTries>1</NumberOfTries>
<Minutes>0</Minutes>
<Days>0</Days>
<LastScheduleDate>"+datetime+"</LastScheduleDate>
<IsClearSucces>False</IsClearSucces>";
// Set the setting to first task with known name
var name = project.Variables["Name"].Value;
ZennoPoster.SetSchedulerSettings(name, settings);

Конструкция не отрабатывает...
Предполагаю, что проблема связана с первой строкой кода и заключается в типах.
 
В WaitTime что лежит?

DateTime.Now.AddMinutes там тип добавляемого значения double, а вы добавляете string - project.Variables["WaitTime"].Value
 
Как я и предполагал. Переписал первую строку следующим образом:

var datetime = DateTime.Now.AddMinutes(Convert.ToDouble(project.Variables["HaveToWait"].Value)).ToString(DD.MM.YYYY hh:mm:ss);

Все равно не работает
 
Еще раз повторюсь, что лежит в WaitTime?
Число?
Или может время?
 
Может не нравится формат времени.

Попробуйте так.

Код:
Развернуть Свернуть Копировать
var dt = DateTime.Now.AddMinutes(double.Parse(project.Variables["HaveToWait"].Value));
var datetime= string.Format("{0}/{1}/{2} {3}:{4}:{5}", dt.Month, dt.Day, dt.Year, dt.Hour, dt.Minute, dt.Second);

Чтобы формат времен был такой 12/19/2015 22:34:04 месяц/число/год время
 
Потестил:
Код:
Развернуть Свернуть Копировать
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);

Все работает.))
 
Спасибо, работает!
Было бы неплохо, если под операции добавления/удаления/планирования появились наборы экшенов.
 
Заметил следующее - проект встает в планировщик, но не стартует в назначенное время.
Пробую руками - отвожу время старта на пару минут вперед, жду - старт не происходит.
H2JH.jpg
 
Похоже, проблема состоит в данных, находящихся в поле "Закончить к", не смотря на то, что активна опция "Закончить после". Провел эксперимент - создаю расписание с равными значениями "Начало" и "Закончить к" - запуск по расписанию производится.
 
Настройки Остановки посмотрите. По ним тоже может не срабатывать
 

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