欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

C#實現(xiàn)定時任務Task Scheduler的示例代碼

 更新時間:2024年02月28日 14:03:16   作者:我只吃飯不洗碗  
這篇文章主要為大家詳細介紹了C#實現(xiàn)定時任務Task Scheduler的相關(guān)知識,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下

本文和大家分享一個自己寫的 Windows 定時任務計劃(Task Scheduler) 動態(tài)創(chuàng)建代碼,沒做太多封裝,留個實現(xiàn)筆記

首先封裝一個簡單配置項的類

核心代碼

public class TaskSchedulerConfig
{
    /// <summary>
    /// 引用程序路徑
    /// </summary>
    public string ApplicationPath { get; set; }
    /// <summary>
    /// 引用程序參數(shù)
    /// </summary>
    //public string ApplicationParameter { get; set; }
    /// <summary>
    /// 任務名稱
    /// </summary>
    public string TaskName { get; set; }
    /// <summary>
    /// 任務說明
    /// </summary>
    public string TaskDescription { get; set; }
    /// <summary>
    /// 任務執(zhí)行周期 0 每日執(zhí)行 1 每周執(zhí)行 2 每月執(zhí)行
    /// </summary>
    public int TaskExecutionCycle { get; set; }
    /// <summary>
    /// 開始執(zhí)行時間范圍 yyyy/MM/dd HH:mm:ss
    /// </summary>
    public DateTime StartBoundary { get; set; }
    /// <summary>
    /// 每月的第幾號執(zhí)行
    /// </summary>
    public int DaysOfMonth { get; set; }
    /// <summary>
    /// 每周的周幾執(zhí)行
    /// </summary>
    public int DaysOfWeek { get; set; }


}

兩個范圍判定的方法

 /// <summary>
          /// 根據(jù)數(shù)字1-7來設(shè)置周一 - 周日
          /// </summary>
          /// <param name="num"></param>
          /// <returns></returns>
          static DaysOfTheWeek GetDaysOfTheWeek(int num)
          {
              switch (num)
              {
                 case 1:
                     return DaysOfTheWeek.Monday;
                 case 2:
                     return DaysOfTheWeek.Tuesday;
                 case 3:
                     return DaysOfTheWeek.Wednesday;
                 case 4:
                     return DaysOfTheWeek.Thursday;
                 case 5:
                     return DaysOfTheWeek.Friday;
                 case 6:
                     return DaysOfTheWeek.Saturday;
                 case 7:
                     return DaysOfTheWeek.Sunday;
                 default:
                     throw new ArgumentException("無效的數(shù)字。請?zhí)峁?到7之間的數(shù)字。");
             }
         }
         /// <summary>
         /// 限定每月只能在1-28號之間執(zhí)行任務
         /// </summary>
         /// <param name="num"></param>
         /// <returns></returns>
         static int GetDaysOfMonth(int num)
         {
             if (num < 1 || num > 28)
             {
                 throw new ArgumentException("無效的數(shù)字。請?zhí)峁?到28之間的數(shù)字。");
             }
             return num;
         }

Main

 static void Main(string[] args)
          {           
  
              TaskSchedulerConfig taskSchedulerConfig;
              try
              {
                  var taskSchedulerConfigJson = args[0];
                  taskSchedulerConfig = JsonConvert.DeserializeObject<TaskSchedulerConfig>(taskSchedulerConfigJson);
              }
             catch
             {
                 string demo = @"{
                           ""ApplicationPath"": ""C:\\YourApplication\\YourExecutable.exe"",
                           ""TaskName"": ""DailyTask"",
                           ""TaskDescription"": ""This is a daily task"",
                           ""TaskExecutionCycle"": 0,
                           ""StartBoundary"": ""2024/02/28 08:00:00"",
                           ""DaysOfMonth"": 28,
                           ""DaysOfWeek"": 3
                        }";
 
                 Console.WriteLine($"參數(shù)錯誤,正確示例:{demo}");
                 return;
             }
 
 
             try
             {
                 using (TaskService taskService = new TaskService())
                 {
                     // 創(chuàng)建一個新任務
                     TaskDefinition taskDefinition = taskService.NewTask();
                     taskDefinition.Principal.UserId = "SYSTEM"; // 設(shè)置為SYSTEM以在系統(tǒng)級別運行
                     // 設(shè)置任務的基本信息
                     taskDefinition.RegistrationInfo.Description = taskSchedulerConfig.TaskDescription;
 
                     switch (taskSchedulerConfig.TaskExecutionCycle)
                     {
                         case 0:
                             DailyTrigger dailyTrigger = new DailyTrigger();
                             dailyTrigger.StartBoundary = taskSchedulerConfig.StartBoundary;
                             dailyTrigger.DaysInterval = 1; // 每天執(zhí)行
                             taskDefinition.Triggers.Add(dailyTrigger);
                             break;
                         case 1:
                             WeeklyTrigger weeklyTrigger = new WeeklyTrigger();
                             weeklyTrigger.StartBoundary = taskSchedulerConfig.StartBoundary;
                             weeklyTrigger.DaysOfWeek = GetDaysOfTheWeek(taskSchedulerConfig.DaysOfWeek);
                             weeklyTrigger.WeeksInterval = 1; // 每隔1周執(zhí)行
                             taskDefinition.Triggers.Add(weeklyTrigger);
                             break;
                         case 2:
                             MonthlyTrigger monthlyTrigger = new MonthlyTrigger();
                             monthlyTrigger.StartBoundary = taskSchedulerConfig.StartBoundary;
                             monthlyTrigger.DaysOfMonth = new[] { GetDaysOfMonth(taskSchedulerConfig.DaysOfMonth) };
                             monthlyTrigger.MonthsOfYear = MonthsOfTheYear.AllMonths; // 每個月執(zhí)行
                             taskDefinition.Triggers.Add(monthlyTrigger);
                             break;
                         default:
                             Console.WriteLine("任務執(zhí)行周期參數(shù)錯誤!正確示例:0 每日執(zhí)行 1 每周執(zhí)行 2 每月執(zhí)行");
                             break;
                     }
 
 
 
                     // 設(shè)置要執(zhí)行的程序路徑
                     taskDefinition.Actions.Add(new ExecAction(taskSchedulerConfig.ApplicationPath, null, null));
 
                     // 將任務注冊到 Windows 任務計劃程序
                     taskService.RootFolder.RegisterTaskDefinition(taskSchedulerConfig.TaskName, taskDefinition);
                     Console.WriteLine("任務計劃創(chuàng)建成功!");
                 }
             }
             catch (Exception ex)
             {
                 Console.WriteLine($"創(chuàng)建{taskSchedulerConfig.TaskName} 任務錯誤,錯誤原因是:{ex.Message}");
             }
 
            
         }

到此這篇關(guān)于C#實現(xiàn)定時任務Task Scheduler的示例代碼的文章就介紹到這了,更多相關(guān)C#定時任務內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

最新評論