<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      一篇學會cron表達式

      1、定義

      Cron表達式是一種用于定義定時任務的格式化字符串。它被廣泛用于Unix、Linux和類Unix系統中,用于在指定的時間執行預定的任務。Cron表達式由6個字段組成,每個字段通過空格分隔開。
      在本文中,我們將學習如何理解和編寫Cron表達式。
      Cron表達式的格式如下:

      * * * * * *  
      | | | | | |  
      | | | | | +-- 星期(周日=0 或 7)  
      | | | | +---- 月份(1-12)  
      | | | +------ 日期(1-31)  
      | | +-------- 小時(0-23)  
      | +---------- 分鐘(0-59)  
      +------------ 秒(0-59)
      

      每個字段可以使用數字來表示具體的值,也可以使用一些特殊字符來表示范圍、遞增等。

      下面是一些常用的特殊字符:

      :代表所有可能的值,例如在小時字段中表示每一個小時。
      ?:在日期和星期字段中,表示不指定值。
      -:表示范圍,例如在小時字段中1-3表示1點到3點。
      ,:表示列舉值,例如在小時字段中1,3,5表示1點、3點和5點。
      /:表示遞增,例如在分鐘字段中*/15表示每15分鐘。
      下面是一些示例Cron表達式:

      1)每分鐘的第30秒執行任務:

      30 * * * * *
      

      2)每小時的第30分鐘執行任務:

      * 30 * * * *
      

      3)每天的凌晨1點執行任務:

      0 1 * * *
      

      4)每月的第1天的凌晨1點執行任務:

      0 1 1 * *
      

      5)每周一的凌晨1點執行任務:

      0 1 * * 1
      

      以上只是Cron表達式的一些基本示例,你可以根據自己的需求靈活組合各個字段來定義復雜的定時任務。需要注意的是,Cron表達式的具體語法和支持的特殊字符可能因不同的系統或工具而有所差異,因此在實際使用時最好查閱相關文檔進行參考。

      2、.NET代碼舉例

      以下是一個使用.NET代碼的例子,演示如何創建和執行一個Cron表達式。
      首先,你需要安裝一個用于解析和執行Cron表達式的.NET庫。常用的庫是NCrontab和Quartz,你可以通過NuGet包管理器將其添加到你的項目中。
      安裝完成后,你可以使用以下代碼創建一個Cron表達式,并生成一個對應的定時任務。

      1)NCrontab

      1、安裝NCrontab庫

      2、NCrontabUtil工具類

      /// <summary>
      /// NCrontab解析Cron表達式
      /// 不支持秒級
      /// </summary>
      public static class NCrontabUtil
      {
          /// <summary>
          /// 執行NCrontab解析
          /// </summary>
          /// <param name="cronExpression">Cron表達式</param>
          public static void ExecuteNCrontab(string cronExpression)
          {
              // 解析Cron表達式  
              CrontabSchedule schedule = CrontabSchedule.Parse(cronExpression);
      
              // 獲取當前時間  
              DateTime currentTime = DateTime.Now;
      
              // 計算下一個執行時間  
              DateTime nextOccurrence = schedule.GetNextOccurrence(currentTime);
      
              Console.WriteLine("下一個執行時間:" + nextOccurrence.ToString());
      
              // 在下一個執行時間執行任務  
              // 這里只是簡單打印一條消息作為示例任務  
              Action task = () => Console.WriteLine("執行任務...");
              task.Invoke();
          }
      }
      

      3、調用

      // 創建一個Cron表達式
      string cronExpression = "";
      
      // NCrontab 不支持秒級
      // 在每小時的第一分鐘執行任務。這個表達式具體表示在每小時的第一分鐘(例如01:01、02:01、03:01等)觸發執行相應的任務
      // 其他字段的值使用星號()表示,意味著對應字段的所有可能值都被匹配,即任務在每個小時都會執行
      cronExpression = "1 * * * *";
      NCrontabUtil.ExecuteNCrontab(cronExpression);
      

      4、結果

      2)Quartz(推薦使用,支持6為表達式->支持秒級)

      1、安裝Quartz庫

      2、QuartzUtil工具類

      /// <summary>
      /// Quartz解析Cron表達式
      /// 支持秒級
      /// </summary>
      public static class QuartzUtil
      {
          /// <summary>
          /// 執行Quartz解析
          /// </summary>
          /// <param name="cronExpression">Cron表達式</param>
          public async static void ExecuteQuartz(string cronExpression)
          {
              // 創建調度器工廠
              var schedulerFactory = new StdSchedulerFactory();
              // 獲取調度器  .ConfigureAwait(false)避免死鎖,下同
              var scheduler = await schedulerFactory.GetScheduler().ConfigureAwait(false);
              // 開啟調度器
              await scheduler.Start().ConfigureAwait(false);
              // 創建作業
              var job = JobBuilder.Create<MyJob>()
                  .WithIdentity("myJob")
                  .Build();
              // 創建觸發器,并設置CRON表達式
              var trigger = TriggerBuilder.Create()
                  .WithIdentity("myTrigger")
                  .WithCronSchedule(cronExpression)  
                  .Build();
      
              // 將作業和觸發器關聯到調度器中
              await scheduler.ScheduleJob(job, trigger).ConfigureAwait(false);
      
              // 保持主程序的運行,以便調度器持續執行任務  
              Console.WriteLine("Press any key to exit...");
              Console.ReadKey();
      
              // 關閉調度器
              await scheduler.Shutdown().ConfigureAwait(false);
          }
      
          // 創建作業類
          public class MyJob : IJob
          {
              public async Task Execute(IJobExecutionContext context)
              {
                  // 在這里編寫每秒要執行的代碼
                  if (context.NextFireTimeUtc.HasValue)
                  {
                      Console.WriteLine("執行任務中...下一次執行任務時間" + context.NextFireTimeUtc.Value.ToLocalTime().DateTime.ToString("yyyy-MM-dd HH:mm:ss"));
                  }
                  else
                  {
                      Console.WriteLine("執行任務中...下一次執行任務時間未知");
                  }
                  await Task.CompletedTask;
              }
          }
      }
      

      3、調用

      // 創建一個Cron表達式
      string cronExpression = "";
      
      // Quartz 支持秒級
      // 每秒執行一次的CRON表達式  
      cronExpression = "0/1 * * * * ?";
      QuartzUtil.ExecuteQuartz(cronExpression);
      

      4、結果

      希望本文能幫助你學會理解和編寫Cron表達式,以便在系統中實現定時任務的自動化執行。

      posted @ 2023-11-28 20:01  GoodTimeGGB  閱讀(892)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲欧美自偷自拍视频图片| 免费现黄频在线观看国产| 四虎永久精品在线视频| 欧美性群另类交| 久久国产精品久久久久久| 久久久久久久久久久免费精品| 狠狠色狠狠色综合久久蜜芽| 国产精品午夜av福利| 人妻体内射精一区二区三四| 久久久这里只有精品10| 亚洲av不卡电影在线网址最新| 亚洲精品国男人在线视频| 精品福利一区二区三区免费视频| 久99久热免费视频播放| 国产曰批视频免费观看完| 久久精品一本到99热免费| 国产91麻豆视频免费看| 内地自拍三级在线观看| 国产专区一va亚洲v天堂| 日韩中文字幕在线不卡一区| 欧美成人h精品网站| 日本伊人色综合网| 99福利一区二区视频| 青川县| 麻豆蜜桃伦理一区二区三区| 国产揄拍国产精品| 欧美牲交a欧美牲交aⅴ图片 | 99久久婷婷国产综合精品青草漫画| 亚洲性猛交xxxx| 人妻少妇精品无码专区| 亚洲欧美中文字幕日韩一区二区| 久久午夜无码鲁丝片直播午夜精品| 秋霞电影网| 99视频精品全部免费 在线| 色爱综合激情五月激情| 自拍偷拍视频一区二区三区| 国产做无码视频在线观看浪潮 | 国模无吗一区二区二区视频| 人人爽人人爽人人片av东京热| 国产高清精品在线91| 在线高清免费不卡全码|