后台执行指定任务方式:

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);
        }
View Code

相关文章: