Question

J'ai écrit une application SharePoint 2010 qui utilise un TimerJob pour déclencher le traitement de certains documents dans une liste. La minuterie est réglée pour déclencher chaque minute, mais le traitement peut prendre plus d'une minute. Je me demande si le prochain déclenchement du travail du minuteur sera commencé à utiliser un nouveau thread, ou bien le service du minuteur attendez que le premier thread a terminé. Je ne sais pas comment gérer les discussions pour Sharepoint TimerJobs et je ne peux pas vraiment trouver toute information pertinente.

Ceci est peut-être un problème étant donné que ma définition de TimerJob a ce qui suit:

 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)
        { 
        }
    }
}

Le PRManager.TriggerProcessing() est une méthode statique, évidemment, et alors qu'il ne contient des mécanismes pour limiter un seul thread à la fois entrer dans le corps de la méthode, je me demande si SharePoint ne crée plusieurs threads dans le cas où ceux de minutes -interval appelle à exécuter les chevauchements.

Était-ce utile?

La solution

Eh bien, ce n'est pas tant une chose « fil » autant qu'il est une chose « de travail ».

SharePoint stocke tous les emplois dans une table de base de données et utilise ce tableau pour suivre ce qui est en cours d'exécution et où il est en cours d'exécution. Il a construit dans le moteur de synchronisation qui est responsable de se assurer que les emplois exécutent comme disent les instructions d'emploi.

  

Par exemple prendre le déploiement demander   qui est rien de plus qu'un emploi. le   tâche de déploiement permet seulement un emploi à   courir pour une solution donnée à un moment.   Il veille à ce que toutes les tâches   terminer sur chaque serveur de la batterie   avant que le travail d'ensemble est rapporté comme   fait.

La réponse dépendra de la façon dont les propriétés de votre configuration de travail sont définies. Il y a une propriété sur ce travail qui dit SharePoint pour permettre une seule instance de ce travail à exécuter à la fois. Donc, si le travail est en train d'exécuter une autre instance de celui-ci ne sera pas démarré.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top