ScheduleTaskHelper.Tasks
1.0.6
See the version list below for details.
dotnet add package ScheduleTaskHelper.Tasks --version 1.0.6
NuGet\Install-Package ScheduleTaskHelper.Tasks -Version 1.0.6
<PackageReference Include="ScheduleTaskHelper.Tasks" Version="1.0.6" />
<PackageVersion Include="ScheduleTaskHelper.Tasks" Version="1.0.6" />
<PackageReference Include="ScheduleTaskHelper.Tasks" />
paket add ScheduleTaskHelper.Tasks --version 1.0.6
#r "nuget: ScheduleTaskHelper.Tasks, 1.0.6"
#:package ScheduleTaskHelper.Tasks@1.0.6
#addin nuget:?package=ScheduleTaskHelper.Tasks&version=1.0.6
#tool nuget:?package=ScheduleTaskHelper.Tasks&version=1.0.6
ScheduleTaskHelper.Tasks
?? Overview
ScheduleTaskHelper.Tasks is a task scheduling framework designed for .NET applications. It provides support for various scheduling modes, including periodic tasks and Cron-based scheduling. The framework is highly extensible and integrates seamlessly with plugin architectures, making it ideal for applications requiring efficient task management.
??? Key Features
- Periodic and Cron Scheduling: Supports both fixed-interval and Cron-based task scheduling.
- Task Prioritization: Manage task execution order within groups.
- Retry Mechanism: Automatically retries failed tasks with configurable retry policies.
- Extensibility: Easily integrates with plugin-based architectures.
- Task Execution Tracking: Monitor task execution status and history.
- Distributed Locking: Ensures safe execution in multi-node environments.
??? Architecture
Core Components
1. Scheduled Task Interface (IScheduledTask)
Defines the contract for all scheduled tasks, including properties for task name, group, priority, and execution intervals.
public interface IScheduledTask
{
string Name { get; }
string Group { get; }
TimeSpan InitialDelay { get; }
TimeSpan Period { get; }
int Priority { get; }
Task<int> Execute();
void Stop();
}
2. Cron Scheduled Task Interface (ICronScheduledTask)
Extends IScheduledTask to support Cron-based scheduling.
public interface ICronScheduledTask : IScheduledTask
{
bool Immediate { get; }
string CronExpression { get; }
DateTime GetNextExecution(DateTime now);
}
3. Base Task (BaseTask)
Provides a default implementation of IScheduledTask, simplifying task development.
4. Base Cron Task (BaseCronTask)
Extends BaseTask to support Cron-based scheduling.
5. Task Retry Queue (TaskRetryQueue)
Manages failed tasks and retries them based on configurable policies.
6. Scheduled Thread Pool (ScheduledThreadPool)
Manages task execution, including scheduling, prioritization, and concurrency control.
?? Configuration
Task Configuration File (pluginconfig.json)
Defines task-specific settings, including scheduling intervals, priorities, and parameters.
{
"TaskConfigurations": {
"SampleTask": {
"Enabled": true,
"Group": "SampleTasks",
"Priority": 1,
"InitialDelay": "00:00:10",
"Period": "00:05:00"
},
"SampleCronTask": {
"Enabled": true,
"Group": "SampleTasks",
"CronExpression": "0 */5 * * * *",
"ExecuteImmediately": true
}
}
}
Key Configuration Fields
- Enabled: Whether the task is enabled.
- Group: The group to which the task belongs.
- Priority: Execution priority within the group.
- InitialDelay: Delay before the first execution.
- Period: Interval between executions for periodic tasks.
- CronExpression: Cron expression for scheduling.
- ExecuteImmediately: Whether to execute the task immediately upon startup.
?? Getting Started
1. Create a Task
Implement the IScheduledTask or ICronScheduledTask interface to create a new task.
public class SampleTask : BaseTask
{
public SampleTask(string name, string group, TimeSpan initDelay, TimeSpan period, int priority)
: base(name, group, initDelay, period, priority)
{
}
public override Task<int> Execute()
{
Console.WriteLine($"Executing task: {Name}");
return Task.FromResult(0);
}
}
2. Schedule Tasks
Use the ScheduledThreadPool to schedule tasks dynamically.
var threadPool = new ScheduledThreadPool();
var task = new SampleTask("Task1", "Group1", TimeSpan.FromSeconds(10), TimeSpan.FromMinutes(5), 1);
threadPool.Schedule(task, task.InitialDelay, task.Period, task.Priority);
3. Use Cron Tasks
Create tasks using the BaseCronTask class for Cron-based scheduling.
public class SampleCronTask : BaseCronTask
{
public SampleCronTask(string name, string cronExpression)
: base(name, cronExpression, 1, "CronGroup", true)
{
}
public override Task<int> Execute()
{
Console.WriteLine($"Executing Cron task: {Name}");
return Task.FromResult(0);
}
}
?? API Documentation
Scheduled Thread Pool (ScheduledThreadPool)
- Schedule: Schedules a periodic task.
- ScheduleCron: Schedules a Cron-based task.
- Shutdown: Stops all scheduled tasks.
Task Retry Queue (TaskRetryQueue)
- AddForRetry: Adds a failed task to the retry queue.
- CheckRetryQueue: Processes tasks in the retry queue.
?? License
This project is licensed under the MIT License. See the LICENSE file for details.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net7.0 is compatible. 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 is compatible. 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 is compatible. 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. |
-
net7.0
- NCrontab (>= 3.3.3)
- ScheduleTaskHelper.Infrastructure (>= 1.0.6)
-
net8.0
- NCrontab (>= 3.3.3)
- ScheduleTaskHelper.Infrastructure (>= 1.0.6)
-
net9.0
- NCrontab (>= 3.3.3)
- ScheduleTaskHelper.Infrastructure (>= 1.0.6)
NuGet packages (2)
Showing the top 2 NuGet packages that depend on ScheduleTaskHelper.Tasks:
| Package | Downloads |
|---|---|
|
ScheduleTaskHelper.Plugins
ScheduleTaskHelper.Plugins 是一個專為 .NET 應用程式設計的插件式架構框架,提供動態載入與管理外部插件的能力。此框架支援插件的初始化、服務註冊、任務管理與卸載,並透過標準化的介面與基底類別,簡化插件的開發與整合。適用於需要高擴展性與模組化設計的應用場景。 |
|
|
ScheduleTaskHelper.Core
ScheduleTaskHelper 是一個功能強大的任務排程與執行框架,專為 .NET 應用程式設計。它支援多種任務排程模式(包括定時與 Cron 表達式),並整合了分散式鎖機制、任務重試佇列與事件驅動架構,確保任務執行的可靠性與高效性。此外,該框架支援插件式架構,允許動態載入外部插件,適合用於分散式系統或需要高效任務管理的應用場景。 |
GitHub repositories
This package is not used by any popular GitHub repositories.