用TaskScheduler创建计划任务

public partial class Form1 : Form
    {
        public Form1()
        {
            InitializeComponent();
            
        }
        private void ExcuteFunction()
        {
            ShowNavigationMsg();
            var input = "";
            var exit = false;
            while (exit == false && string.IsNullOrEmpty(input = Console.ReadKey().KeyChar.ToString().ToLower()) == false)
            {
                switch (input)
                {
                    case "a":
                        CreateTestTask();
                        break;
                    case "b":
                        RetrieveTestTask();
                        break;
                    case "c":
                        DeleteTestTask();
                        break;
                    case "d":
                        exit = true;
                        break;
                    default:
                        ShowNavigationMsg();
                        break;
                }

            }
        }

        /// 
        /// 删除计划任务
        /// 
        private static void DeleteTestTask()
        {
            // 计划任务服务
            TaskService ts = new TaskService();
            ts.RootFolder.DeleteTask("mySoul Task");
            ShowNavigationMsg();

        }

        /// 
        /// 查询计划任务
        /// 
        private static void RetrieveTestTask()
        {
            // 计划任务服务
            TaskService ts = new TaskService();
            //如果计划任务不为空
            Task t = ts.GetTask(@"mySoul Task");
            if (null != t)
            {
                Console.WriteLine("Task Name={0}", t.Name);
                Console.WriteLine("Task Execution Time={0}", t.LastRunTime);
                Console.WriteLine("Task Last Run Result={0}", t.LastTaskResult);
                Console.WriteLine("Task Next Execution Time={0}", t.NextRunTime);
            }
            ShowNavigationMsg();

        }



        static void ShowNavigationMsg()
        {
            Console.WriteLine();
            Console.WriteLine("Please choose your action by input a charactor:");
            Console.WriteLine("[a]Add mySoul Task       [b]Retrieve mySoul Task Status ");
            Console.WriteLine("[c]Delete mySoul Task    [d]Eixt");
        }

        /// 
        /// 创建计划任务
        /// 
        private static void CreateTestTask(string applicationName, string applicationStartupPath)
        {
            //short DaysInterval = 1;
            // 计划任务服务
            TaskService ts = new TaskService();

            // 创建一个计划任务
            TaskDefinition td = ts.NewTask();
            td.RegistrationInfo.Description = "自动上传工程文档";
            td.RegistrationInfo.Author = "mySoul";

            //每天启动
            DailyTrigger dt=new DailyTrigger(1);
            //Trigger dt = new DailyTrigger() { DaysInterval = 1 };
            //Trigger dt = new DailyTrigger();
            //DailyTrigger dt = (DailyTrigger)td.Triggers.Add(new DailyTrigger { DaysInterval = 1 });
            //DailyTrigger dt1 = (DailyTrigger)td.Triggers.Add(new DailyTrigger { DaysInterval = 2 });




            //限制计划任务每次执行时间不能超过1小时
            dt.ExecutionTimeLimit = TimeSpan.FromHours(1);
            //dt.StartBoundary = DateTime.Parse("12:00 AM");
            dt.StartBoundary = DateTime.Now.AddMinutes(10);
            // task.RegistrationInfo.Date = dt.AddMinutes(1).ToString("yyyy-MM-ddTHH:mm:ss");

            //全天重复执行
            dt.Repetition.Duration = TimeSpan.FromHours(24);
            //每隔120分钟重复一次
            dt.Repetition.Interval = TimeSpan.FromMinutes(120);
            //将触发器添加到计划任务td的触发器中
            td.Triggers.Add(dt);

            //创建一个执行操作
            var exe = new ExecAction(applicationName, null,applicationStartupPath);
            //var exe = new ExecAction("notepad.exe", "C:\\test.log", null);
            
            //添加执行操作到计划任务的操作中
            td.Actions.Add(exe);

            //注册计划任务
            ts.RootFolder.RegisterTaskDefinition(@"mySoul Task", td);

            ShowNavigationMsg();
        }

        public enum TaskTriggerType
        {
            // Summary:
            //     Triggers the task when a specific event occurs. Version 1.2 only.
            Event = 0,
            //
            // Summary:
            //     Triggers the task at a specific time of day.
            Time = 1,
            //
            // Summary:
            //     Triggers the task on a daily schedule.
            Daily = 2,
            //
            // Summary:
            //     Triggers the task on a weekly schedule.
            Weekly = 3,
            //
            // Summary:
            //     Triggers the task on a monthly schedule.
            Monthly = 4,
            //
            // Summary:
            //     Triggers the task on a monthly day-of-week schedule.
            MonthlyDOW = 5,
            //
            // Summary:
            //     Triggers the task when the computer goes into an idle state.
            Idle = 6,
            //
            // Summary:
            //     Triggers the task when the task is registered. Version 1.2 only.
            Registration = 7,
            //
            // Summary:
            //     Triggers the task when the computer boots.
            Boot = 8,
            //
            // Summary:
            //     Triggers the task when a specific user logs on.
            Logon = 9,
            //
            // Summary:
            //     Triggers the task when a specific user session state changes. Version 1.2
            //     only.
            SessionStateChange = 11,
        }

        private void Form1_Load(object sender, EventArgs e)
        {
            string fileName = "AutoUpLoadFile.exe";
            string fileFullPath = Application.StartupPath;
            // 计划任务服务
            TaskService ts = new TaskService();
            //如果计划任务不为空
            Task t = ts.GetTask(@"mySoul Task");
            if (null == t)
            {
                CreateTestTask(fileName,fileFullPath);
            }
        }



    }

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值