SharePoint TimeJob使用笔记

PS:TimeJob里面的代码有更新之后 需要重新启用TimeJob的服务,要不然执行的还是之前的代码

 

1,主要代码,创建一个TimeJob类,里面继承他需要继承的类,都是一个模式。

using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;
using Microsoft.SharePoint.Utilities;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Web;


namespace NuctechProject
{
    public class MyTimerJob : SPJobDefinition
    {
        // 该构造只用于序列化和反列化,因为timer job的Definition 初始化后成为instance需要保存在数据库中  
        public MyTimerJob(): base()
        {

        }

        // 创建针对SPService application的timer job 是调用的构造  
        public MyTimerJob(string jobName, SPService service, SPServer server, SPJobLockType lockType)
            : base(jobName, service, server, lockType)
        {
            this.Title = "PlanWarn Timer Job";//此处是TimeJob的名称
        }

        // 创建针对web application的timer job 是调用的构造  
        public MyTimerJob(string jobName, SPWebApplication webapp)
            : base(jobName, webapp, null, SPJobLockType.ContentDatabase)
        {
            this.Title = "PlanWarn Timer Job";//此处是TimeJob的名称
        }

        // 每次执行到Timer Job时要执行的方法。跟据Timer Job 的Schedule  
        public override void Execute(Guid targetInstanceId)
        {
            SPWebApplication webapp = this.Parent as SPWebApplication;
            SPContentDatabase contentDb = webapp.ContentDatabases[targetInstanceId];
            // 取参数,通过Properties可以从外部传递参数,但要求参数可以被序列化和反列化  

            //需要执行的代码
        }}

需要注意点:

1,this.Title = "PlanWarn Timer Job";//此处是TimeJob的名称

this.Title是设置你的TimeJob名字,到后面设置定时的时候需要找的

2,在public override void Execute(Guid targetInstanceId)里面写你的逻辑代码就好了

 

 

 

2,主要代码有了,现在创建一个Feature,以下代码均是自动生成。需要改的地方为

    1,const string JobName = "PlanWarn Timer Job";  此处的名字就是第一步的this.Title

    2,修改FeatureActivated方法里面的new SPSite(http://demo1); 构造参数改成你配置的地址

using System;
using System.Runtime.InteropServices;
using System.Security.Permissions;
using Microsoft.SharePoint;
using Microsoft.SharePoint.Administration;

namespace NuctechProject.Features.Feature1
{
    /// <summary>
    /// 此类用于处理在激活、停用、安装、卸载和升级功能的过程中引发的事件。
    /// </summary>
    /// <remarks>
    /// 附加到此类的 GUID 可能会在打包期间使用,不应进行修改。
    /// </remarks>

    [Guid("673a25ed-2556-42e5-ac1c-155ef01ae7d7")]
    public class Feature1EventReceiver : SPFeatureReceiver
    {
        // 取消对以下方法的注释,以便处理激活某个功能后引发的事件。
        const string JobName = "PlanWarn Timer Job";
        public override void FeatureActivated(SPFeatureReceiverProperties properties)
        {
            // 注意此处as 后面是SPSite还是SPWeb, SPFarm ...要根据Feature 的Scope  
            SPSite site = new SPSite("http://demo1");

            DeleteJob(site); // Delete Job if already Exists  

            CreateJob(site); // Create new Job  
        }


        private static void DeleteJob(SPSite site)
        {
            foreach (SPJobDefinition job in site.WebApplication.JobDefinitions)
                if (job.Name == JobName)
                    job.Delete();
        }

        private static void CreateJob(SPSite site)
        {

            // 初始化 SPJobDefinition  
            MyTimerJob job = new MyTimerJob(JobName, site.WebApplication);

            // 传递参数  
            job.Properties.Add("SiteUrl", site.Url);

            // 设置 schedule, 可选 SPDailySchedule, SPWeeklySchedule, SPYearlySchedule,SPMonthlyByDaySchedule,SPHourlySchedule,SPMinuteSchedule            

            SPMinuteSchedule schedule = new SPMinuteSchedule();
            schedule.BeginSecond = 0;
            schedule.EndSecond = 5;
            schedule.Interval = 5;

            job.Schedule = schedule;
            job.Update();

        }

        // 取消对以下方法的注释,以便处理在停用某个功能前引发的事件。

        public override void FeatureDeactivating(SPFeatureReceiverProperties properties)
        {
            // 删除 Timer Job的实例  
            DeleteJob(properties.Feature.Parent as SPSite); // Delete the Job  
        }

        // 取消对以下方法的注释,以便处理在安装某个功能后引发的事件。

        //public override void FeatureInstalled(SPFeatureReceiverProperties properties)
        //{
        //}


        // 取消对以下方法的注释,以便处理在卸载某个功能前引发的事件。

        //public override void FeatureUninstalling(SPFeatureReceiverProperties properties)
        //{
        //}

        // 取消对以下方法的注释,以便处理在升级某个功能时引发的事件。

        //public override void FeatureUpgrading(SPFeatureReceiverProperties properties, string upgradeActionName, System.Collections.Generic.IDictionary<string, string> parameters)
        //{
        //}
    }
}

 

3,上面两步完成之后,就需要去作业定义里面设置,这个代码每隔多久执行一次了。

具体操作步骤请看这个

http://www.cnblogs.com/jianyus/p/3458535.html

 

我的是主要代码,上面的地址是每步骤,以及详细解释

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值