FluentTaskScheduler 0.1.0-beta4
See the version list below for details.
dotnet add package FluentTaskScheduler --version 0.1.0-beta4
NuGet\Install-Package FluentTaskScheduler -Version 0.1.0-beta4
<PackageReference Include="FluentTaskScheduler" Version="0.1.0-beta4" />
<PackageVersion Include="FluentTaskScheduler" Version="0.1.0-beta4" />
<PackageReference Include="FluentTaskScheduler" />
paket add FluentTaskScheduler --version 0.1.0-beta4
#r "nuget: FluentTaskScheduler, 0.1.0-beta4"
#:package FluentTaskScheduler@0.1.0-beta4
#addin nuget:?package=FluentTaskScheduler&version=0.1.0-beta4&prerelease
#tool nuget:?package=FluentTaskScheduler&version=0.1.0-beta4&prerelease
FluentTaskScheduler
A modern, task-based job scheduling library for .NET with a fluent DSL and native dependency injection support.
⏱️ Write readable, chainable, and intuitive task scheduling code.
💉 Fully DI-friendly – perfect for use with Microsoft.Extensions.DependencyInjection.
⚙️ Supports interval-based, time-based, and restricted-time-range execution.
✨ Features
- Fluent API design (
For(),ThenFor(),Every(),DailyAt(),Between(),NotRunThisDays()etc.) - Chainable task steps
- Interval and specific-time support
- Excluded day filtering
- Multiple daily execution times
- Easy testability
- No external dependencies
📦 Installation
dotnet add package FluentTaskScheduler --version 0.1.0-beta
⚙️ Getting Started
1. Register the Scheduler
Program.cs:
builder.Services.AddFluentTaskScheduler(); builder.Services.AddSchedulerFor<IMyService>();
builder.Services.AddTransient<IMyService, MyService>();
2. Create Your Service
public interface IMyService { Task StepOneAsync(); Task StepTwoAsync(); Task SyncDailyDataAsync(); Task GenerateReportAsync(); }
3. Configure Jobs
var scheduler = host.Services.GetRequiredService<SchedulerBuilder<IMyService>>();
scheduler .For(x ⇒ x.StepOneAsync()) .ThenFor(x ⇒ x.StepTwoAsync()) .Every(TimeSpan.FromMinutes(10)) .Between("09:00", "18:00") .Do();
Usage Examples
Run a job at multiple times every day
scheduler .For(x ⇒ x.SyncDailyDataAsync()) .DailyAt("12:00") .DailyAt("15:00") .DailyAt("19:30") .Do();
Run every hour except weekends
scheduler .For(x ⇒ x.GenerateReportAsync()) .Every(TimeSpan.FromHours(1)) .NotRunThisDays(DayOfWeek.Saturday, DayOfWeek.Sunday) .Do();
Multi-step workflow
scheduler .For(x ⇒ x.InitializeAsync()) .ThenFor(x ⇒ x.ProcessDataAsync()) .ThenFor(x ⇒ x.CleanupAsync()) .Every(TimeSpan.FromMinutes(5)) .Do();
🧠 How It Works
- Thread-safe job storage using ConcurrentQueue
- DI-resolved service execution
- Non-blocking background execution using ThreadPool
- AOT-friendly (no reflection invoke)
- Accurate next-run time calculation system
📁 Folder Structure
FluentTaskScheduler/ ├─ Core/ ├─ DSL/ ├─ Execution/ ├─ Extensions/
Roadmap
- Cron syntax parser
- Persistent job storage
- Dashboard UI
- Retry policies
- Distributed execution support
License: MIT
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net10.0 is compatible. 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. |
-
net10.0
- Microsoft.Extensions.DependencyInjection (>= 10.0.0)
- Microsoft.Extensions.Hosting (>= 10.0.0)
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 |
|---|---|---|
| 0.1.0-beta5 | 175 | 11/25/2025 |
| 0.1.0-beta4 | 379 | 11/19/2025 |
| 0.1.0-beta3 | 275 | 9/19/2025 |
| 0.1.0-beta2 | 158 | 9/8/2025 |
| 0.1.0-beta | 158 | 9/8/2025 |