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

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

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

      Longbow.Tasks 實戰—任務持久化

      原文地址 http://www.rzrgm.cn/ysmc/p/18795934

        之前寫過一個文章,是介紹Longbow.Tasks這個定時任務調度庫的,然后不少小伙伴問過我,怎么東西怎么用,也怪我,在那篇文章結尾我講過要出實戰的,后來拋之腦后了,實在慚愧。

        簡單講下這個庫的情況,Longbow.Tasks 于Gitee 上開源,這個是開源地址:https://gitee.com/Longbow/Longbow.Tasks ,最主要的是改庫支持  NETFramework 4.5+ 與 NETCore 2.0+。

        先來回顧一下怎么使用這個庫:

      初始化

      .NET Core 中,包括 .NET 5 .NET 6 .NET 7.....需要注入服務

      builder.Services.AddTaskServices();

      NETFramework 4.5+

      // 程序入口調用
      TaskServicesManager.Init();

      使用例子

       1 //立即執行,僅執行一次
       2 TaskServicesManager.GetOrAdd<TasksDemo>("任務唯一標識");
       3 
       4 //周期性任務 (1 分鐘后間隔 5 秒執行2次任務)
       5 var trigger = TriggerBuilder.Default.WithInterval(TimeSpan.FromSeconds(5)).WithRepeatCount(2).WithStartTime(DateTimeOffset.Now.AddMinutes(1)).Build();
       6 
       7 TaskServicesManager.GetOrAdd<TasksDemo>("任務唯一標識", trigger);
       8 
       9 //支持cron表達式,間隔 5 秒循環執行任務
      10 TaskServicesManager.GetOrAdd<TasksDemo>("任務唯一標識", TriggerBuilder.Build("*/5 * * * * *"));
      11 
      12 //這里重點關注,可以讓你的任務接收 serviceProvider 參數,這樣就可以使用注入的服務了
      13 TaskServicesManager.GetOrAdd("任務唯一標識", async (serviceProvider, token) =>
      14 {
      15     System.Console.WriteLine("任務唯一標識");
      16     await Task.Delay(1000);
      17 }, TriggerBuilder.Build("*/5 12 * * * *"));

      持久化

        這里我使用 .NET 8 為例子,主要使用的是 依賴項注入-鍵控服務

      1、我們先定義一個任務接口

      public interface ITestService
      {
          Task Run(IServiceProvider serviceProvider);
      }

      2、注冊幾個任務

      builder.Services.AddKeyedTransient<ITestService, Test1Service>("Test1");
      builder.Services.AddKeyedTransient<ITestService, Test2Service>("Test2");
      builder.Services.AddKeyedTransient<ITestService, Test3Service>("Test3");

      3、寫一個 IHostedService,用于定時任務的添加

       1 public class TestHostedService : IHostedService
       2 {
       3     private readonly IServiceProvider _serviceProvider;
       4 
       5     public TestHostedService(IServiceProvider serviceProvider)
       6     {
       7         _serviceProvider = serviceProvider;
       8     }
       9 
      10     /// <summary>
      11     /// 假設這里是從數據庫中讀取的定時任務
      12     /// </summary>
      13     public Dictionary<string, string> Servers = new Dictionary<string, string>()
      14     {
      15         //key為服務名稱,value為cron表達式
      16         ["Task1"] = "*/5 12 * * * *",
      17         ["Task2"] = "*/10 12 * * * *",
      18         ["Task3"] = "*/15 12 * * * *",
      19     };
      20 
      21     public async Task StartAsync(CancellationToken cancellationToken)
      22     {
      23         await using var scope = _serviceProvider.CreateAsyncScope();
      24         foreach (var server in Servers)
      25         {
      26             // 根據服務名稱獲取服務
      27             var testServices = scope.ServiceProvider.GetKeyedServices<ITestService>(server.Key);
      28             if (testServices.Any())
      29             {
      30                 ///正常來說一個任務對應一個服務,這里只取第一個
      31                 var testService = testServices.First();
      32                 // 添加定時任務
      33                 TaskServicesManager.GetOrAdd(server.Key, async (serviceProvider, token) =>
      34                 {
      35                     await testService.Run(serviceProvider);
      36                 }, TriggerBuilder.Build(server.Value));
      37             }
      38         }
      39     }
      40 
      41     public Task StopAsync(CancellationToken cancellationToken)
      42     {
      43         Console.WriteLine("StopAsync");
      44 
      45         return Task.CompletedTask;
      46     }
      47 }

        代碼就這么多,感謝各位大佬的觀看!

      posted @ 2025-03-27 14:41  一事冇誠  閱讀(12727)  評論(0)    收藏  舉報
      主站蜘蛛池模板: 亚洲午夜无码久久久久蜜臀AV| 2018av天堂在线视频精品观看| 护士张开腿被奷日出白浆| 一本久久a久久精品综合| 正在播放酒店约少妇高潮| 蜜臀av一区二区精品字幕| 亚洲爆乳WWW无码专区| 国产肥臀视频一区二区三区| 在线观看潮喷失禁大喷水无码| 国产精品视频午夜福利| 亚洲老女人区一区二视频| 亚洲熟妇无码八av在线播放| 精品一卡2卡三卡4卡乱码精品视频 | 五月丁香啪啪| 91精品国产免费人成网站| 亚洲国产精品综合久久20| 色综合久久综合久鬼色88| 免费一本色道久久一区| 日本不卡的一区二区三区| 中国熟妇毛多多裸交视频| 封丘县| 一本色道国产在线观看二区| 欧美日本国产va高清cabal| 色偷偷www.8888在线观看| 久久夜色精品国产亚洲a| 国产精品99久久免费| 综合激情网一区二区三区| 亚洲日本欧美日韩中文字幕| 托里县| 高碑店市| 无码伊人66久久大杳蕉网站谷歌 | 亚洲精品乱码久久久久久中文字幕| 尖扎县| 欧美日韩精品一区二区三区高清视频| 国产免费久久精品44| 亚洲国产大胸一区二区三区| 国产精品第二页在线播放| 国产欧美一区二区精品仙草咪| 亚洲激情一区二区三区视频 | 潘金莲高清dvd碟片| 亚洲国产精品嫩草影院久久|