- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我编写了一个 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/
我编写了一个 SharePoint 2010 应用程序,它使用 TimerJob 触发列表中某些文档的处理。计时器设置为每分钟触发一次,但处理过程可能需要一分多钟。我只是想知道计时器作业的下一个触发器
我是一名优秀的程序员,十分优秀!