EonaCat.Scheduler
1.0.7
Prefix Reserved
dotnet add package EonaCat.Scheduler --version 1.0.7
NuGet\Install-Package EonaCat.Scheduler -Version 1.0.7
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="EonaCat.Scheduler" Version="1.0.7" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add EonaCat.Scheduler --version 1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
#r "nuget: EonaCat.Scheduler, 1.0.7"
#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.
// Install EonaCat.Scheduler as a Cake Addin
#addin nuget:?package=EonaCat.Scheduler&version=1.0.7
// Install EonaCat.Scheduler as a Cake Tool
#tool nuget:?package=EonaCat.Scheduler&version=1.0.7
The NuGet Team does not provide support for this client. Please contact its maintainers for support.
EonaCat Scheduler
EonaCat Scheduler for C#
How to use the EonaCat Scheduler:
Example Program:
class Program
{
static CronConfiguration CronConfiguration { get; set; }
private static IHostBuilder CreateHostBuilder()
{
return Host.CreateDefaultBuilder()
.ConfigureServices((_, services) =>
services.AddCronJob<CronJob1>(c =>
{
c.CronConfiguration = CronConfiguration;
}));
}
public static int TIMER_DELAY = 100;
static async Task Main(string[] args)
{
CancellationToken stoppingToken = new CancellationToken();
// Cron that runs every 10 seconds
var secondsCron = ConfigurationGenerator.GenerateSecondsCronConfiguration(10);
Console.WriteLine(secondsCron.CronExpression);
CronConfiguration = secondsCron;
// Cron that runs every minute
var minuteCron = ConfigurationGenerator.GenerateMinutesCronConfiguration(1);
Console.WriteLine(minuteCron.CronExpression);
CronConfiguration = minuteCron;
// Cron that runs every hour
var hourlyCron = ConfigurationGenerator.GenerateHourlyCronConfiguration(1);
Console.WriteLine(hourlyCron.CronExpression);
CronConfiguration = hourlyCron;
// Cron that runs every day at 16:26:10
var dailyCron = ConfigurationGenerator.GenerateDailyCronConfiguration(new TimeSpan(16, 26, 10));
Console.WriteLine(dailyCron.CronExpression);
CronConfiguration = dailyCron;
// Cron that runs every day at 16:32:00 during the weekdays
var weeklyCron = ConfigurationGenerator.GenerateWeekDayOnlyCronConfiguration(new TimeSpan(16, 32, 00));
Console.WriteLine(weeklyCron.CronExpression);
CronConfiguration = weeklyCron;
// Cron that runs every day at 16:38:00 during the weekend
var weekendCron = ConfigurationGenerator.GenerateWeekendsOnlyCronConfiguration(new TimeSpan(16, 38, 00));
Console.WriteLine(weekendCron.CronExpression);
CronConfiguration = weekendCron;
// Cron that runs every day at 16:34:00 , only an specific days (saturday and sunday)
var multiDayCron = ConfigurationGenerator.GenerateMultiDayCronConfiguration(new TimeSpan(16, 34, 00), new System.Collections.Generic.List<DayOfWeek> { DayOfWeek.Saturday, DayOfWeek.Sunday });
Console.WriteLine(multiDayCron.CronExpression);
CronConfiguration = multiDayCron;
// Cron that runs monthly at 15:00:00 , every 2nd month, for 12 months
var monthCron = ConfigurationGenerator.GenerateMonthlyCronConfiguration(new TimeSpan(15, 00, 00), 2, 12);
Console.WriteLine(monthCron.CronExpression);
CronConfiguration = monthCron;
// Cron that runs every year at 15:00:00 , every 2nd month, for 12 months
var yearlyCron = ConfigurationGenerator.GenerateYearlyCronConfiguration(new TimeSpan(15, 00, 00), 2, 12);
Console.WriteLine(yearlyCron.CronExpression);
CronConfiguration = yearlyCron;
using var host = CreateHostBuilder().Build();
host.Start();
while (!stoppingToken.IsCancellationRequested)
{
await Task.Delay(TIMER_DELAY, stoppingToken);
}
}
}
Example CronJob:
public class CronJob1 : CronJobService
{
private readonly ILogger<CronJob1> _logger;
public CronJob1(IScheduleConfig<CronJob1> config, ILogger<CronJob1> logger)
: base(config.CronConfiguration.CronExpression, config.CronConfiguration.TimeZoneInfo, config.CronConfiguration.CronFormat)
{
_logger = logger;
}
public override Task StartAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("CronJob 1 started.");
return base.StartAsync(cancellationToken);
}
public override Task DoWork(CancellationToken cancellationToken)
{
_logger.LogInformation($"{DateTime.Now:hh:mm:ss} CronJob 1 is working.");
Task.Delay(TimeSpan.FromSeconds(2));
_logger.LogInformation("CronJob 1 completed working.");
return Task.CompletedTask;
}
public override Task StopAsync(CancellationToken cancellationToken)
{
_logger.LogInformation("CronJob 1 is stopping.");
return base.StopAsync(cancellationToken);
}
}
Product | Versions Compatible and additional computed target framework versions. |
---|---|
.NET | net5.0 is compatible. net5.0-windows was computed. 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. |
.NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard2.0 is compatible. netstandard2.1 is compatible. |
.NET Framework | net461 was computed. net462 was computed. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
MonoAndroid | monoandroid was computed. |
MonoMac | monomac was computed. |
MonoTouch | monotouch was computed. |
Tizen | tizen40 was computed. tizen60 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
-
.NETStandard 2.0
- Microsoft.Extensions.Hosting.Abstractions (>= 3.0.0)
- Microsoft.Extensions.Options (>= 3.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 3.0.0)
-
.NETStandard 2.1
- Microsoft.Extensions.Hosting.Abstractions (>= 3.0.0)
- Microsoft.Extensions.Options (>= 3.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 3.0.0)
-
net5.0
- Microsoft.Extensions.Hosting.Abstractions (>= 3.0.0)
- Microsoft.Extensions.Options (>= 3.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 3.0.0)
-
net6.0
- Microsoft.Extensions.Hosting.Abstractions (>= 3.0.0)
- Microsoft.Extensions.Options (>= 3.0.0)
- Microsoft.Extensions.Options.ConfigurationExtensions (>= 3.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.