SharePoint TimerJobs и потоки - PullRequest
       10

SharePoint TimerJobs и потоки

3 голосов
/ 23 февраля 2010

Я написал приложение 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 создает несколько потоков в том случае, если они в-минт-интервальные вызовы для выполнения перекрытия.

Заранее спасибо.

1 Ответ

3 голосов
/ 24 февраля 2010

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

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...