• Share Point 创建 TimerJob


    public class SyncMetadataJob:SPJobDefinition 
        {
            private const string JobName = @"Metadata Sync Job";
            private int counter = 0;
    
            public SyncMetadataJob() : base() { }
    
            public SyncMetadataJob(string jobName, SPService service)
                : base(jobName, service, null, SPJobLockType.ContentDatabase) {
                    this.Title = JobName;
            }
    
            public SyncMetadataJob(string jobName, SPWebApplication webapp) :
                base(jobName, webapp, null, SPJobLockType.ContentDatabase)
            {
                this.Title = JobName;
            }
    
            public override void Execute(Guid targetInstanceId) {
                SPSecurity.RunWithElevatedPrivileges(delegate()
                {
                    try
                    {
                        counter = 0;
                        Log("Sync Metadata Job Started.");
                        var lastSyncDate = getLastSyncDate();
                        syncMetaData(lastSyncDate);
                        updateLastSyncDate();
                        Log(string.Format("Sync Metadata {0} terms Updated.", counter));
                        Log("Sync Metadata Job Completed.");
                    }
                    catch (Exception ex)
                    {
                        Log(string.Format("Sync Metadata Job thrown an exception:{0}.", ex.ToString()));
                    }
                    
                });
            }
        }
    }
    public override void FeatureActivated(SPFeatureReceiverProperties properties)
            {
                SPSite site = properties.Feature.Parent as SPSite;
                DeleteSyncMetadataJob(site);
                CreateSyncMetadataJob(site);
            }
    
    
            // Uncomment the method below to handle the event raised before a feature is deactivated.
    
            public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
            {
                SPSite site = properties.Feature.Parent as SPSite;
                DeleteSyncMetadataJob(site);
            }
    
    private void CreateSyncMetadataJob(SPSite site)
            {
                var syncMetadataJob = new SyncMetadataJob(metadataSyncJobName, site.WebApplication);
                var schedule = new SPMinuteSchedule();
                schedule.BeginSecond = 0;
                schedule.EndSecond = 59;
                schedule.Interval = 3; //60 * 24 * 3;    //per 3 days
                syncMetadataJob.Schedule = schedule;
                syncMetadataJob.Update();
            }
    
            private void DeleteSyncMetadataJob(SPSite site)
            {
                foreach (var job in site.WebApplication.JobDefinitions)
                {
                    if (job.Name == metadataSyncJobName)
                        job.Delete();
                }
            }
  • 相关阅读:
    过滤非GBK字符
    打印整数数字
    std::string 方法列表
    设计模式——单例模式(Singleton )
    编程之美二进制一的个数
    Jsoncpp试用指南
    GCC下宏扩展后的++i
    关于字节对齐的sizeof的讨论
    Notepad++ 更改和定制主题
    求子数组的最大和
  • 原文地址:https://www.cnblogs.com/nanfei/p/3709283.html
Copyright © 2020-2023  润新知