首页 > 代码库 > SharePoint开发 - TimerJob简单实例讲解
SharePoint开发 - TimerJob简单实例讲解
SharePoint中的TimerJob类似于Windows系统的计划任务,可以实现定时执行指定操作的功能。
本篇所述的实例为在SharePoint 2010 Foundation版本下实现SharePoint用户的同步功能。
1. 打开Visual Studio 2010,创建一个SharePoint的空解决方案,选择部署为场解决方案
2. 添加一个新类MyTimerJob,添加using引用Microsoft.SharePoint.Administration,继承SPJobDefinition类,这个便是我们自己的timerjob。然后声明两个构造函数,如下所示
using Microsoft.SharePoint.Administration; namespace TimerJobExample { public class MyTimerJob : SPJobDefinition { public MyTimerJob() : base() { } public MyTimerJob(string jobName, SPWebApplication webApp) : base(jobName, webApp, null, SPJobLockType.Job) { this.Title = jobName; } } }
3. 接下来最重要的一步,就是我们需要写出来这个timerjob需要做什么。重写Execute方法,代码如下所示
public override void Execute(Guid targetInstanceId) { base.Execute(targetInstanceId); SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["SPMIPConn"].ConnectionString); conn.Open(); //取站点 在webConfig部署,用户直接修改自己webConfig //<add key="SiteURL" value=http://www.mamicode.com/"http://spf02"/>>
这里,由于我手头的环境是基于SQL数据用户表的Form认证,戳这里,所以具体的做法是,读取到SQL用户表中的数据,然后同步到SharePoint的用户列表。4. timerjob写完了,现在我们需要通过feature去控制这个timerjob,在feature激活的时候添加这个timerjob,并在取消激活的时候删除它,代码如下
public override void FeatureActivated(SPFeatureReceiverProperties properties) { const string MY_TASK = "SPMIP用户信息同步";//事件检查定时器 SPSite site = properties.Feature.Parent as SPSite; foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) { if (job.Name == MY_TASK) { job.Delete(); break; } } Synchronization schtion = new Synchronization(MY_TASK, site.WebApplication); SPDailySchedule schedule = new SPMonthlySchedule(); schedule.BeginHour = 23; schedule.BeginMinute = 40; schedule.BeginSecond = 1; schedule.EndHour = 23; schedule.EndMinute = 59; schedule.EndSecond = 1; schtion.Schedule = schedule; schtion.Update(); } public override void FeatureDeactivating(SPFeatureReceiverProperties properties) { const string MY_TASK = "SPMIP用户信息同步";//事件检查定时器 SPSite site = properties.Feature.Parent as SPSite; foreach (SPJobDefinition job in site.WebApplication.JobDefinitions) { if (job.Name == MY_TASK) { job.Delete(); break; } } }以上就是应用timerjob的大致过程
SharePoint开发 - TimerJob简单实例讲解
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。