我编写了一个 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 确实在这些 at-minute-interval 调用的情况下创建了多个线程执行重叠。