Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SharePoint TimerJobs和线程_Sharepoint_Sharepoint 2010 - Fatal编程技术网

SharePoint TimerJobs和线程

SharePoint TimerJobs和线程,sharepoint,sharepoint-2010,Sharepoint,Sharepoint 2010,我编写了一个SharePoint 2010应用程序,它使用TimerJob触发对列表中某些文档的处理。计时器设置为每分钟触发一次,但处理可能需要一分钟以上。我只是想知道计时器作业的下一个触发器是使用新线程启动的,还是计时器服务只是等待第一个线程完成。我不知道Sharepoint如何管理TimerJobs的线程,也找不到任何相关信息 这可能是一个问题,因为我的TimerJob定义包含以下内容: public override void Execute(Guid contentDbId)

我编写了一个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一次只允许运行该作业的一个实例。因此,如果作业当前正在执行,它的另一个实例将不会启动

干杯。当您说“作业配置属性”时,您是指我创建的实际SPJobDefinition的“一次一个作业”类型属性吗?