Вопрос

Я написал приложение SharePoint 2010, которое использует TimerJob для запуска обработки некоторых документов в списке.Таймер настроен на срабатывание каждую минуту, но обработка может занять больше минуты.Мне просто интересно, будет ли следующий триггер задания таймера запущен с использованием нового потока, или служба таймера просто будет ждать, пока первый поток не завершится.Я понятия не имею, как Sharepoint управляет потоками для TimerJobs, и не могу найти никакой соответствующей информации.

Возможно, это проблема, учитывая, что мой TimerJob определение имеет следующее:

 public override void Execute(Guid contentDbId)
    {
        try
        {
            SPWebApplication webApplication = this.Parent as SPWebApplication;
            SPContentDatabase contentDb = webApplication.ContentDatabases[contentDbId];
            using (SPSite site = contentDb.Sites[0])
            {
                using (SPWeb web = site.RootWeb)
                {                       
                    PRManager.TriggerProcessing(web);    // ?                   
                }
            }
        }                      
        catch (Exception)
        { 
        }
    }
}

А PRManager.TriggerProcessing() очевидно, что это статический метод, и хотя он содержит механизмы, ограничивающие вход в тело метода только одним потоком за раз, мне просто интересно, действительно ли SharePoint создает несколько потоков в случае, если эти вызовы с минутным интервалом выполняются перекрывать.

Это было полезно?

Решение

Ну, это не столько «нить», сколько «работа».

SharePoint хранит все задания в таблице базы данных и использует эту таблицу для отслеживания того, что и где выполняется.Он имеет встроенный механизм синхронизации, который отвечает за выполнение заданий в соответствии с инструкциями задания.

Например, возьмите развертывание, спросите, что является не чем иным, как работой.Задача развертывания позволяет только одну задачу работать за данное решение за раз.Это гарантирует, что все задачи завершаются на каждом сервере на ферме до того, как общая задача будет сообщена, как это сделано.

Таким образом, ответ будет зависеть от того, как установлены свойства конфигурации вашего задания.В этом задании есть свойство, которое указывает SharePoint разрешать одновременное выполнение только одного экземпляра этого задания.Поэтому, если задание в данный момент выполняется, другой его экземпляр не будет запущен.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top