Sharepoint Timer Jobs und Einfädeln
-
22-09-2019 - |
Frage
Ich habe eine Sharepoint 2010-App geschrieben, die eine TimerJob zu Trigger Verarbeitung von einigen Dokumenten in einer Liste verwendet. Der Timer wird einmal pro Minute auslösen, aber das kann die Verarbeitung mehr als eine Minute dauern. Ich frage mich nur, wenn der nächste Auslöser des Zeitgeberauftrages wird mit einem neuen Thread gestartet werden, oder es wird der Timer-Dienst nur warten, bis der erste Thread abgeschlossen hat. Ich habe keine Ahnung, wie Sharepoint-Threads für TimerJobs verwaltet und ich kann nicht wirklich alle relevanten Informationen finden.
Dies ist möglicherweise ein Problem gegeben, dass meine TimerJob
Definition Folgendes:
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)
{
}
}
}
Die PRManager.TriggerProcessing()
ist eine statische Methode, natürlich, und während es Mechanismen enthält nur ein Thread zu einem Zeitpunkt, zu begrenzen, die Methode Körper eindringen, ich frage mich nur, ob Sharepoint mehr Threads im Fall schafft, dass diejenigen in Minuten -interval Anrufe ausführen überlappen.
Lösung
Nun, es ist nicht so sehr ein „Faden“, was so viel wie es eine „Job“ Sache ist.
speichert Sharepoint alle Aufträge in einer Datenbanktabelle und verwendet diese Tabelle zu verfolgen, was läuft und wo es ausgeführt wird. Es wurde ein in Synchronisierungs-Engine eingebaut, die für dafür, dass die Aufträge ausführen, wie die Arbeitsanweisungen sagen verantwortlich ist.
Zum Beispiel nimmt die Bereitstellung fragen Das ist nichts anderes als ein Job. Das Aufgabe Remote-Installation kann nur ein Job läuft für eine bestimmte Lösung zu einem Zeitpunkt. Es stellt sicher, dass alle Aufgaben Abschluss auf jedem Server in der Farm bevor die gesamte Arbeit wird berichtet, wie getan.
Die Antwort hängt davon ab, wie Sie Ihre Job-Konfigurationseigenschaften festgelegt werden. Es ist eine Eigenschaft auf diesen Job, die Sharepoint nur erzählt, um eine Instanz dieser Arbeit zu ermöglichen zu einem Zeitpunkt ausgeführt werden. Also, wenn der Job gerade eine andere Instanz davon Ausführung wird nicht gestartet werden.