最近在寫一個匯入工具時用到了一個新的東西Quartz 計時器 ,timer有的Quartz 基本都有,所以用Quartz 來寫了下代碼,并記錄,
1、首先需要參考GuGet程式包,搜索' quartz ' ,下載安裝到程式,
2、直接上代碼,創建job,trigger等方法
job傳參: job.JobDataMap.Put("AutoImport", formInstance); ,我這里'AutoImport' 是一個主表單的實體
// 1.創建scheduler的參考 ISchedulerFactory schedFact = new StdSchedulerFactory(); sched = await schedFact.GetScheduler(); //2.啟動 scheduler await sched.Start(); // 3.創建 job IJobDetail job = JobBuilder.Create<DoWork>() .WithIdentity("job5", "group5") .Build(); job.JobDataMap.Put("AutoImport", formInstance); //job傳參 // 4.創建 trigger ITrigger trigger = TriggerBuilder.Create() .WithIdentity("trigger5", "group5") .StartAt(DateTime.Parse(startime)) .WithSimpleSchedule(x => x .WithIntervalInMinutes(int.Parse(jiange)) //下次執行時間的 時間 .RepeatForever()) //永遠執行 .Build(); // 5.使用trigger規劃執行任務job await sched.ScheduleJob(job, trigger);
3、執行job里的方法,獲取job傳來的主表單實體,通過實體修改控制元件的值,
public class DoWork : IJob { public virtual async Task Execute(IJobExecutionContext context) { AutoImport au = (AutoImport)context.JobDetail.JobDataMap.Get("AutoImport"); //獲取job傳來的引數
//修改主表單中控制元件的值
au.datetime_startime.Value = https://www.cnblogs.com/lxyang/p/DateTime.Parse(nexttime);
au.lab_msg.Text = "等待下次啟動時間..." + nexttime;
await Task.CompletedTask;
}
}
這樣就解決了修改主表單控制元件值的問題了,
有關 Quartz 的其他方法,兄弟兒們可以自行百度啦,大把大把的資料demo供你學習!!
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/38325.html
標籤:C#
上一篇:C# Windows服務開發入門
