none
Таймер-джоб вызывается несколько раз вместо одного. SharePoint 2013 RRS feed

  • Вопрос

  • Доброго времени суток!

    В шарике есть несколько списков и один таймер-джоб, который каждый день их просматривает. С помощью дебаггинга обнаружил, что метод execute обрабатывает 2 targetInstanceId. Раньше никогда с таким не сталкивался. Подскажите с чем это может быть связано?

    public override void Execute(Guid targetInstanceId)
            {
                base.Execute(targetInstanceId);
                using (SPSite spSite = new SPSite("http://mysite/sites/sitecollection/"))
                {
                    using (SPWeb spWeb = spSite.OpenWeb())
                    {
                       ...
                    }
     }

    26 октября 2015 г. 15:56

Ответы

  • Решение крылось в моем вопросе: targetInstanceId is the database ID of the content database being processed by the running job. Оказалось, что на application созданы 2 базы, поэтому таймер и выполнялся 2 раза :)
    • Помечено в качестве ответа Ivan.T 27 октября 2015 г. 15:53
    27 октября 2015 г. 15:53

Все ответы

  • Перед запуском можно проверить по имени, запущен ли уже джоб

     foreach (SPJobDefinition job in spSite.JobDefinitions)
                    {
                        if (job.Name == jobName)
                        {
                            job.Delete();
                        }
                    }
    где, jobName - имя джоба

    27 октября 2015 г. 13:31
  • Решение крылось в моем вопросе: targetInstanceId is the database ID of the content database being processed by the running job. Оказалось, что на application созданы 2 базы, поэтому таймер и выполнялся 2 раза :)
    • Помечено в качестве ответа Ivan.T 27 октября 2015 г. 15:53
    27 октября 2015 г. 15:53