LXL_Timed_Scheduling 1.1.1

There is a newer version of this package available.
See the version list below for details.
dotnet add package LXL_Timed_Scheduling --version 1.1.1
                    
NuGet\Install-Package LXL_Timed_Scheduling -Version 1.1.1
                    
This command is intended to be used within the Package Manager Console in Visual Studio, as it uses the NuGet module's version of Install-Package.
<PackageReference Include="LXL_Timed_Scheduling" Version="1.1.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="LXL_Timed_Scheduling" Version="1.1.1" />
                    
Directory.Packages.props
<PackageReference Include="LXL_Timed_Scheduling" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add LXL_Timed_Scheduling --version 1.1.1
                    
#r "nuget: LXL_Timed_Scheduling, 1.1.1"
                    
#r directive can be used in F# Interactive and Polyglot Notebooks. Copy this into the interactive tool or source code of the script to reference the package.
#:package LXL_Timed_Scheduling@1.1.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=LXL_Timed_Scheduling&version=1.1.1
                    
Install as a Cake Addin
#tool nuget:?package=LXL_Timed_Scheduling&version=1.1.1
                    
Install as a Cake Tool

LXL_Timed_Scheduling 定时任务调度器

一个轻量级的统一定时任务调度器,支持按日、月、周、季度、分钟、小时等方式调度任务,并自动记录日志。适用于 .NET 项目中对任务定期执行的场景。


✨ 特性

  • ⏰ 支持多种调度方式(每日、每月、每周、每季度、每分钟、每小时)
  • 🧵 基于 System.Threading.Timer 实现轻量级定时
  • 📄 自动记录任务执行日志,便于排查与分析
  • 🔧 自定义任务逻辑,只需实现一个接口
  • 🧰 提供任务执行辅助类 TaskHelper,简化日志和异常处理

🚀 快速开始

安装 NuGet 包

dotnet add package LXL_Timed_Scheduling

使用示例

// 初始化调度器
var scheduler = new TaskScheduler();

// 添加每日任务(每天 8:30 执行)
scheduler.ScheduleDailyTask("每日报表生成", 
    () => ReportGenerator.GenerateDailyReport(),
    hour: 8, 
    minute: 30);

// 添加每小时任务(每小时的第15分钟执行)
scheduler.ScheduleHourlyTask("数据同步", 
    () => DataSync.SyncFromDatabase(),
    minute: 15);

// 启动调度器
scheduler.Start();

📅 调度方式示例合集

var scheduler = new TaskScheduler();

// 每日任务(每天 14:30 执行)
scheduler.ScheduleDailyTask("每日任务", 
    action: () => { /* 任务逻辑 */ },
    hour: 14,
    minute: 30);

// 每周任务(每周一 2:00 执行)
scheduler.ScheduleWeeklyTask("周备份",
    action: () => BackupService.RunWeeklyBackup(),
    dayOfWeek: DayOfWeek.Monday,
    hour: 2,
    minute: 0);

// 每月任务(每月 1 号 3:30 执行)
scheduler.ScheduleMonthlyTask("月结算",
    action: () => AccountingService.MonthlySettlement(),
    day: 1,
    hour: 3,
    minute: 30);

// 每季度任务(每季度第一天 4:00 执行)
scheduler.ScheduleQuarterlyTask("季度归档",
    action: () => ArchiveService.QuarterlyArchive(),
    hour: 4,
    minute: 0);

// 每分钟任务(每分钟第 0 秒执行)
scheduler.ScheduleMinutelyTask("心跳检测",
    action: () => HealthCheck.Ping(),
    second: 0);

// 每小时任务(每小时第 30 分钟执行)
scheduler.ScheduleHourlyTask("缓存刷新",
    action: () => CacheManager.Refresh(),
    minute: 30);

🛠️ 高级功能

任务日志
所有任务执行都会自动记录日志:
[2023-08-01 08:30:00] [START] [每日报表生成] 任务开始执行  
[2023-08-01 08:30:05] [SUCCESS] [每日报表生成] 任务成功完成
异常处理
任务中的异常会被自动捕获并记录:
scheduler.ScheduleDailyTask("危险任务", () => {
    throw new Exception("出错了!");
});
日志输出示例:
[2023-08-01 09:00:00] [ERROR] [危险任务] 任务执行失败  
异常类型: System.Exception  
异常消息: 出错了!  
堆栈跟踪: ...
异步任务支持
scheduler.ScheduleDailyTask("异步任务", async () => {
    await SomeAsyncOperation();
});
任务辅助类使用
// 同步执行+自动日志
TaskHelper.ExecuteWithLog("同步任务", () => DoSomething());

// 异步执行+自动日志
TaskHelper.RunWithLog("异步任务", () => DoSomethingAsync());

⚙️ 配置选项
可通过 TaskSchedulerOptions 自定义调度器行为:
var options = new TaskSchedulerOptions {
    LogDirectory = "C:/logs",          // 自定义日志目录
    MaxConcurrentTasks = 5,            // 最大并发任务数
    TimeZone = TimeZoneInfo.Local      // 时区设置
};

var scheduler = new TaskScheduler(options);

Product Compatible and additional computed target framework versions.
.NET net6.0 is compatible.  net6.0-android was computed.  net6.0-ios was computed.  net6.0-maccatalyst was computed.  net6.0-macos was computed.  net6.0-tvos was computed.  net6.0-windows was computed.  net7.0 was computed.  net7.0-android was computed.  net7.0-ios was computed.  net7.0-maccatalyst was computed.  net7.0-macos was computed.  net7.0-tvos was computed.  net7.0-windows was computed.  net8.0 was computed.  net8.0-android was computed.  net8.0-browser was computed.  net8.0-ios was computed.  net8.0-maccatalyst was computed.  net8.0-macos was computed.  net8.0-tvos was computed.  net8.0-windows was computed.  net9.0 was computed.  net9.0-android was computed.  net9.0-browser was computed.  net9.0-ios was computed.  net9.0-maccatalyst was computed.  net9.0-macos was computed.  net9.0-tvos was computed.  net9.0-windows was computed.  net10.0 was computed.  net10.0-android was computed.  net10.0-browser was computed.  net10.0-ios was computed.  net10.0-maccatalyst was computed.  net10.0-macos was computed.  net10.0-tvos was computed.  net10.0-windows was computed. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • net6.0

    • No dependencies.

NuGet packages

This package is not used by any NuGet packages.

GitHub repositories

This package is not used by any popular GitHub repositories.

Version Downloads Last Updated
1.1.2 235 4/15/2025
1.1.1 207 4/14/2025
1.1.0 204 4/14/2025
1.0.0 210 4/14/2025