سؤال

لقد كتبت تطبيق SharePoint 2010 يستخدم timerJob لإطلاق معالجة بعض المستندات في قائمة. تم ضبط المؤقت على التشغيل كل دقيقة ولكن المعالجة قد تستغرق أكثر من دقيقة. أنا فقط أتساءل عما إذا كان المشغل التالي لمهمة المؤقت سيبدأ باستخدام موضوع جديد ، أو هل ستنتظر خدمة المؤقت حتى يكتمل الخيط الأول. ليس لدي أي فكرة عن كيفية إدارة SharePoint لخيوط التوقيت ولا يمكنني العثور على أي معلومات ذات صلة.

ربما هذه مشكلة بالنظر إلى أني 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 السماح فقط بمثابة واحدة من هذه الوظيفة بالتشغيل في وقت واحد. لذلك إذا كانت الوظيفة تنفذ حاليًا ، فلن يتم بدء مثيل آخر.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top