• .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>();

  • 相关阅读:
    员工年龄排序之桶排序
    滑动窗口中最大值
    开机自动启动Tomcat
    基于RXTX的串口通讯 windows64位系统可用
    一些SQL
    Java 实现文件上传、下载、打包、文件copy、文件夹copy。
    Page-encoding specified in XML prolog (UTF-8) is different from that specified in page directive (utf-8)
    Java -> 把Excel表格中的数据写入数据库与从数据库中读出到本地 (未完善)
    (转)解决:本地计算机 上的 OracleOraDb10g_home1TNSListener服务启动后停止
    PHP、Java对称加密中的AES加密方法
  • 原文地址:https://www.cnblogs.com/colorchild/p/12765110.html
Copyright © 2020-2023  润新知