后台执行指定任务方式:
sql Job,后台winform程序,windows服务等;
就三者而言各有利弊;
此次记录winform程序执行后台任务的主要代码:
1,Quartz方式:
IScheduler sched = null; private void AutoUpdateBlack_Load(object sender, EventArgs e) { try { ISchedulerFactory sf = new StdSchedulerFactory();//执行者 sched = sf.GetScheduler(); IJobDetail job = JobBuilder.Create<UpateBlackHandler>().WithIdentity("job1", "group1").Build(); ICronTrigger trigger = (ICronTrigger)TriggerBuilder.Create() .WithIdentity("trigger1", "group1") .WithCronSchedule("0 0 1 * * ?") //每天晚上1点运行一次 .Build(); sched.ScheduleJob(job, trigger); sched.Start(); label1.Text = "==程序启动=="; logclass.Debug("程序启动"); } catch (Exception ex) { logclass.Debug("程序==错误" + ex.ToString()); } new UpateBlackHandler().Execute(null); } private void AutoUpdateBlack_FormClosed(object sender, FormClosedEventArgs e) { if (e.CloseReason == CloseReason.WindowsShutDown) { //添加所需使用的代码 logclass.Debug(DateTime.Now + "【电脑关机或者被注销" + "===系统用户:" + System.Environment.UserName + "】"); } if (e.CloseReason == CloseReason.TaskManagerClosing) { //添加所需使用的代码 logclass.Debug(DateTime.Now + "【任务管理器关闭" + "===系统用户:" + System.Environment.UserName + "】"); } if (e.CloseReason == CloseReason.None) { //添加所需使用的代码 logclass.Debug(DateTime.Now + "【未知意外关闭" + "===系统用户:" + System.Environment.UserName + "】"); } if (sched != null) { sched.Shutdown(false); } } private void AutoUpdateBlack_FormClosing(object sender, FormClosingEventArgs e) { logclass.Debug("==程序关闭=="); System.Environment.Exit(System.Environment.ExitCode); }