6K Star 11.8K Fork 4K

GVPdotNET China / Furion

 / 详情

😥 [功能] 重构定时任务,任务调度

已完成
拥有者
创建于  
2021-04-14 15:21
  • 支持简单任务
  • 支持 Cron 任务
  • 支持任务开始,暂停、取消
  • 支持特性声明方式定义任务
  • 支持动态加载 dll 方式
  • 应用停止自动清除所有的任务
  • 获取任务状态
  • 获取任务列表
  • 模拟后台线程执行
  • 支持 Web/WorkderServices 两种方式

后续计划

  • 持久化任务

评论 (2)

百小僧 创建了任务
百小僧 关联仓库设置为dotNET China/Furion
百小僧 任务状态待办的 修改为进行中
百小僧 负责人设置为百小僧
百小僧 添加了
 
建议
标签
百小僧 添加了
 
重大调整
标签
百小僧 添加了
 
优化
标签
百小僧 里程碑设置为Furion 2021
百小僧 计划截止日期设置为2021-04-15
百小僧 计划开始日期设置为2021-04-14
百小僧 计划截止日期2021-04-15 修改为2021-04-14
百小僧 置顶等级设置为
百小僧 优先级设置为严重
百小僧 修改了描述
百小僧 修改了描述
百小僧 修改了描述
百小僧 修改了描述
百小僧 修改了描述
百小僧 修改了描述
百小僧 修改了描述
百小僧 通过 dotnetchina/Furion Commit eed25b7任务状态进行中 修改为已完成
百小僧 置顶等级 修改为不置顶
百小僧 修改了标题
百小僧 修改了描述
展开全部操作日志

简单示例:

using Furion.DynamicApiController;
using Furion.TaskScheduler;
using Microsoft.AspNetCore.Mvc;
using System;

namespace Furion.Application
{
    [ApiDescriptionSettings("Job")]
    public class JobServices : IDynamicApiController
    {
        /// <summary>
        /// 初始化一个简单任务
        /// </summary>
        /// <param name="jobName"></param>
        /// <returns></returns>
        public string InitJob(string jobName = "jobName")
        {
            Console.WriteLine("简单任务初始化");

            SpareTime.Do(1000, (t, i) =>
            {
                Console.WriteLine($"{t.WorkerName} -{t.Description} - {DateTime.Now:yyyy-MM-dd HH:mm:ss} - {i}");
            }, jobName, "模拟测试任务");

            return jobName;
        }

        /// <summary>
        /// 初始化一个 Cron 表达式任务,10秒执行一次
        /// </summary>
        /// <param name="cron"></param>
        /// <param name="jobName"></param>
        /// <returns></returns>
        public string InitCronJob([FromBody] string cron = "*/10 * * * * *", string jobName = "cronName")
        {
            Console.WriteLine("Cron 任务初始化");

            SpareTime.Do(cron, (t, i) =>
            {
                Console.WriteLine($"{t.WorkerName} -{t.Description} - {DateTime.Now:yyyy-MM-dd HH:mm:ss} - {i}");
            }, jobName, "模拟测试任务");

            return jobName;
        }

        /// <summary>
        /// 开始一个简单任务
        /// </summary>
        /// <param name="jobName"></param>
        /// <returns></returns>
        public string StartJob(string jobName = "jobName")
        {
            Console.WriteLine("任务开始");
            SpareTime.Start(jobName);

            return jobName;
        }

        /// <summary>
        /// 停止一个简单任务
        /// </summary>
        /// <param name="jobName"></param>
        /// <returns></returns>
        public string StopJob(string jobName = "jobName")
        {
            Console.WriteLine("任务停止");
            SpareTime.Stop(jobName);

            return jobName;
        }

        /// <summary>
        /// 取消一个简单任务
        /// </summary>
        /// <param name="jobName"></param>
        /// <returns></returns>
        public string CancelJob(string jobName = "jobName")
        {
            Console.WriteLine("任务取消");
            SpareTime.Cancel(jobName);

            return jobName;
        }
    }
}
阿翰 修改了描述
阿翰 修改了描述
修改了描述
修改了描述

登录 后才可以发表评论

状态
负责人
里程碑
Pull Requests
关联的 Pull Requests 被合并后可能会关闭此 issue
分支
开始日期   -   截止日期
-
置顶选项
优先级
参与者(1)
974299 monksoul 1578937227
C#
1
https://gitee.com/dotnetchina/Furion.git
git@gitee.com:dotnetchina/Furion.git
dotnetchina
Furion
Furion

搜索帮助