.net core 任務調度


有時候需要在后台定時執行一些任務,這里有兩種示例:

1、BackgroundService

using Microsoft.Extensions.Hosting;
using System;
using System.Threading;
using System.Threading.Tasks;

namespace Vote.Tools
{
    public class AccessTokenJob : BackgroundService
    {
     //重寫
ExecuteAsync
    protected override async Task ExecuteAsync(CancellationToken stoppingToken) { 
      
try { while (!stoppingToken.IsCancellationRequested) {
            
do {
                //需要執行的任務
                .......
} while (string.IsNullOrEmpty(token));//token獲取失敗繼續執行 await Task.Delay(7200000, stoppingToken); //7200秒執行一次 } } catch (Exception ex) { throw new Exception(); } } } }

 

並且在Startup.cs ConfigureServices方法下配置

services.AddSingleton<Microsoft.Extensions.Hosting.IHostedService, AccessTokenJob>();//第二個為工作調度的類名

 

2、使用Pomelo.AspNetCore.TimedJob

Nuget添加Pomelo.AspNetCore.TimedJob

Startup.cs  ConfigureServices方法下配置

services.AddTimedJob();

 

using BLL.Manager;
using BLL.Vote;
using Models.Manager.Plan;
using Pomelo.AspNetCore.TimedJob;
using System.Collections.Generic;
using System.Linq;

namespace Vote.Tools
{
    public class EmpRecordJob: Pomelo.AspNetCore.TimedJob.Job
    {

        // Begin 起始時間;Interval執行時間間隔,單位是毫秒
        //SkipWhileExecuting是否等待上一個執行完成,true為等待;
        [Invoke(Begin = "2019-06-20 9:00", Interval = 1000 * 3600 , SkipWhileExecuting = true)]
        public void Run()
        {
            //需要執行的代碼
        }
    }
}

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM