/// <summary> /// 添加任务并立即执行 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnMissionBeginNow_Click(object sender, EventArgs e) { try { string str = AddTimerMission(); if (str != "") { Model.TimerMission model = _bll.GetModel(new Guid(str)); bool issuccess = _missionControl.AddSqlExecuteJob(model.SqlStr, Convert.ToDateTime(model.StartTime), Convert.ToDateTime(model.EndTime), model.GroupName, model.MissionName, model.TimeCorn); if (issuccess) { UiHelper.Alert(this, "任务运行成功!"); model.MissionState = 1; _bll.Update(model);//更新数据 } else { UiHelper.Alert(this, "操作失败,请重试!"); } NewDatabind(Convert.ToInt32(countDDL.SelectedValue)); } } catch (Exception) { UiHelper.Alert(this, "操作失败,请重试!"); throw; } }
/// <summary> /// 添加新任务 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void btnBegin_Click(object sender, EventArgs e) { string sqlstr = "insert into TimerTests values('成功',getdate())"; bool issuccess = _control.AddSqlExecuteJob(sqlstr, DateTime.Now.AddSeconds(1), DateTime.Now.AddSeconds(1000), "group1", "mission2", 100, 1); if (issuccess) { UiHelper.Alert(this, "添加成功!"); } }
static void Main(string[] args) { #region 固定设置部分 var properties = new NameValueCollection(); properties["quartz.scheduler.instanceName"] = "RemoteServerSchedulerClient"; // 设置线程池 properties["quartz.threadPool.type"] = "Quartz.Simpl.SimpleThreadPool, Quartz"; properties["quartz.threadPool.threadCount"] = "5"; properties["quartz.threadPool.threadPriority"] = "Normal"; // 远程输出配置 properties["quartz.scheduler.exporter.type"] = "Quartz.Simpl.RemotingSchedulerExporter, Quartz"; properties["quartz.scheduler.exporter.port"] = "556"; properties["quartz.scheduler.exporter.bindName"] = "QuartzScheduler"; properties["quartz.scheduler.exporter.channelType"] = "tcp"; //从工厂中获取一个调度器实例化 var schedulerFactory = new StdSchedulerFactory(properties); var scheduler = schedulerFactory.GetScheduler(); #endregion #region 例子1(简单使用) IJobDetail job1 = JobBuilder.Create <TimerClass.Job.SqlOperateJob>() //创建一个作业 .WithIdentity("作业名称", "作业组") .Build(); ITrigger trigger1 = TriggerBuilder .Create() //声明一个触发器 .WithIdentity("触发器名称", "触发器组") .StartNow() //现在开始 .WithSimpleSchedule(x => x //触发时间,5秒一次。 .WithIntervalInSeconds(5) .RepeatForever()) //不间断重复执行 .Build(); scheduler.ScheduleJob(job1, trigger1); //把作业,触发器加入调度器。 #endregion #region 例子2 (执行时 作业数据传递,时间表达式使用) IJobDetail job2 = JobBuilder.Create <TimerClass.Job.HandlerJob>() .WithIdentity("myJob", "group1") .UsingJobData("jobSays", "在此处执行一些普通的事物操作") .Build(); ITrigger trigger2 = TriggerBuilder.Create() .WithIdentity("mytrigger", "group1") .StartNow() .WithCronSchedule("/3 * * ? * *") //时间调度表达式每整十秒执行一次 .Build(); scheduler.ScheduleJob(job2, trigger2); #endregion scheduler.Start();//开启调度器 #region 任务操作的例子 MissionControl control = new MissionControl(); string sqlstr = "insert into TimerTests values('成功',getdate())"; //使用时间调度表达式 //control.AddSqlExecuteJob(sqlstr , DateTime.Now.AddSeconds(1) , DateTime.Now.AddSeconds(10) , "group1" , "mission1" , "/3 * * ? * *"); //使用间隔时间,循环次数 control.AddSqlExecuteJob(sqlstr, DateTime.Now.AddSeconds(1), DateTime.Now.AddSeconds(100), "group1", "mission2", 3, 10); //control.PauseJob("group1", "mission2"); #endregion //scheduler.Shutdown(true);//关闭调度器。 Console.ReadLine(); }