gpt4 book ai didi

SharePoint TimerJobs 和线程

转载 作者:行者123 更新时间:2023-12-03 16:28:22 25 4
gpt4 key购买 nike

我编写了一个 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 将所有作业存储在一个数据库表中,并使用该表来跟踪正在运行的内容和运行位置。它有一个内置的同步引擎,负责确保作业按照作业说明执行。

For example take the deployment ask which is nothing more than a job. The deployment task only allows One job to run for a given solution at a time. It makes sure that all of the tasks finish on each server in the farm before the overall job is reported as done.

所以答案将取决于您的作业配置属性是如何设置的。该作业的一个属性告诉 SharePoint 一次只允许该作业的一个实例运行。因此,如果作业当前正在执行它的另一个实例,则不会启动。

关于SharePoint TimerJobs 和线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2314386/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com