亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

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

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

首先封裝一個(gè)簡單配置項(xiàng)的類

核心代碼

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


}

兩個(gè)范圍判定的方法

 /// <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號(hào)之間執(zhí)行任務(wù)
         /// </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ù)錯(cuò)誤,正確示例:{demo}");
                 return;
             }
 
 
             try
             {
                 using (TaskService taskService = new TaskService())
                 {
                     // 創(chuàng)建一個(gè)新任務(wù)
                     TaskDefinition taskDefinition = taskService.NewTask();
                     taskDefinition.Principal.UserId = "SYSTEM"; // 設(shè)置為SYSTEM以在系統(tǒng)級(jí)別運(yùn)行
                     // 設(shè)置任務(wù)的基本信息
                     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; // 每個(gè)月執(zhí)行
                             taskDefinition.Triggers.Add(monthlyTrigger);
                             break;
                         default:
                             Console.WriteLine("任務(wù)執(zhí)行周期參數(shù)錯(cuò)誤!正確示例:0 每日執(zhí)行 1 每周執(zhí)行 2 每月執(zhí)行");
                             break;
                     }
 
 
 
                     // 設(shè)置要執(zhí)行的程序路徑
                     taskDefinition.Actions.Add(new ExecAction(taskSchedulerConfig.ApplicationPath, null, null));
 
                     // 將任務(wù)注冊到 Windows 任務(wù)計(jì)劃程序
                     taskService.RootFolder.RegisterTaskDefinition(taskSchedulerConfig.TaskName, taskDefinition);
                     Console.WriteLine("任務(wù)計(jì)劃創(chuàng)建成功!");
                 }
             }
             catch (Exception ex)
             {
                 Console.WriteLine($"創(chuàng)建{taskSchedulerConfig.TaskName} 任務(wù)錯(cuò)誤,錯(cuò)誤原因是:{ex.Message}");
             }
 
            
         }

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

相關(guān)文章

最新評(píng)論