zoukankan      html  css  js  c++  java
  • .net core 简单定时程序

     1 using Microsoft.Extensions.Configuration;
     2 using Microsoft.Extensions.Hosting;
     3 using Orleans;
     4 using Star.Helpers;
     5 using Star.IModuleServices.Common.Interfaces.System;
     6 using Star.IModuleServices.Common.Models.System.SettingHotUpdate.Responses;
     7 using System;
     8 using System.Collections.Concurrent;
     9 using System.Collections.Generic;
    10 using System.Threading;
    11 using System.Threading.Tasks;
    12 using Star.Service.Project.Admin.Tool.ConfigTime;
    13 namespace Star.Service.Project.Admin.Tool.ConfigTime
    14 {
    15     /// <summary>
    16     /// 简单的定时任务执行
    17     /// </summary>
    18     public class TimedExecutService : BackgroundService
    19     {
    20         protected override async Task ExecuteAsync(CancellationToken stoppingToken)
    21         {
    22             try
    23             {
    24                 Console.WriteLine(DateTime.Now.ToString() + "BackgroundService:启动");
    25 
    26                 while (!stoppingToken.IsCancellationRequested)
    27                 {
    28                     await Task.Delay(5000, stoppingToken); //启动后5秒执行一次 (用于测试)
    29                     //数据源
    30                     ApiResult<List<SysSettingHotUpdateResponseDto>> list = new ApiResult<List<SysSettingHotUpdateResponseDto>>();
    31                     try
    32                     {
    33                         var cluster = Ioc.GetService<IClusterClient>();
    34                         list = await cluster.GetGrain<ISysSettingHotUpdate>(0).GetList("Star.Service.Project.Admin");
    35                     }
    36                     catch (Exception ex)
    37                     {
    38                         throw new Exception("未获取到相关配置:" + ex.Message);
    39                     }
    40 
    41                     if (list.Data.Count <= 0)
    42                     {
    43                         throw new Exception("未获取到相关配置");
    44                     }
    45                     //自定义数据处理
    46                     ConfigData.Data = new ConcurrentDictionary<string, string>();
    47                     list.Data.ForEach(c =>
    48                     {
    49                         ConfigData.Data[c.K] = c.V;
    50                     });
    51                     Console.WriteLine(DateTime.Now.ToString() + " 执行逻辑");
    52                 }
    53                 Console.WriteLine(DateTime.Now.ToString() + "BackgroundService:停止");
    54             }
    55             catch (Exception ex)
    56             {
    57                 if (!stoppingToken.IsCancellationRequested)
    58                 {
    59                     Console.WriteLine(DateTime.Now.ToString() + "BackgroundService:异常" + ex.Message + ex.StackTrace);
    60                 }
    61                 else
    62                 {
    63                     Console.WriteLine(DateTime.Now.ToString() + "BackgroundService:停止");
    64                 }
    65             }
    66         }
    67       
    68     }
    69 }

    注入定时任务:
    services.AddSingleton<Microsoft.Extensions.Hosting.IHostedService, TimedExecutService>();

  • 相关阅读:
    [BZOJ4755][JSOI2016]扭动的回文串(manacher+Hash)
    十二省联考2019部分题解
    [BZOJ2959]长跑(LCT+并查集)
    [BZOJ4541][HNOI2016]矿区(平面图转对偶图)
    笛卡尔树
    [CF896C]Willem, Chtholly and Seniorious(珂朵莉树)
    [BZOJ4349]最小树形图
    [BZOJ1858][SCOI2010]序列操作(线段树)
    [PA2014]Parking
    [PA2014]Budowa
  • 原文地址:https://www.cnblogs.com/colorchild/p/12765110.html
Copyright © 2011-2022 走看看