ConDuck 0.1.0
dotnet add package ConDuck --version 0.1.0
NuGet\Install-Package ConDuck -Version 0.1.0
<PackageReference Include="ConDuck" Version="0.1.0" />
paket add ConDuck --version 0.1.0
#r "nuget: ConDuck, 0.1.0"
// Install ConDuck as a Cake Addin #addin nuget:?package=ConDuck&version=0.1.0 // Install ConDuck as a Cake Tool #tool nuget:?package=ConDuck&version=0.1.0
ConDuck
ConDuck (A funky mixup of the word 'Conduct') is a library for scheduling the time of executions in C#. It gives some predefined classes, but does also allow for customization.
The following is an example of a piece of code, which everyday both at 08:30 and at 18:45, remindes the user to do something and then tells the user a joke.
using ConDuck;
var service = new CustomTimedService(
WaiterGallery.GetTODWaiter((8,30),(18,45)),
new SequentialExecutor(),
null
);
service.AddRoutine(() => Console.WriteLine("Remember to do something!"));
service.AddRoutine(() => Console.WriteLine(JokeGenerator.Generate()));
service.StartService();
while(true);
The following is an example of a piece of code, which gives the user a reminder after two hours.
using ConDuck;
var task = TimedExecution.ExecuteIn(2, TimeUnit.HOURS, () => {
Console.WriteLine("Take the meat of the grill!");
});
while(!task.IsCompleted);
The remaining part of this document will give a more indepth explaination of the different parts of ConDuck.
TimeUnit
This is an enum, representing the time units that ConDuck works with. HOURS, MINUTES, SECONDS AND MILLISECONDS. It also has a static method for turning some amount of one unit, into MILLISECONDS.
TimeOfDay
This class represents some time of day, in the format hh:mm:ss. Attempting to construct an object, with a time of day that does not exist, will throw an ArgumentExeception.
Likely the most interresting part of this class is the property TimeUntil, which gives how many milliseconds there are until the specified time occures again.
TimedExecution
This static class, contain methods for one-off timed executions of delegates. All these methods return the Task that they create, which means that it is possible to wait for the execution to finish. If the delegate returns a value, it wont be acquirable.
Method | Explaination |
---|---|
ExecuteIn() | Waits the specified amount of time before execution. If no TimeUnit is specifed, milliseconds will be used. |
ExecuteAt() | Waits until the specifed time of day arrives, before execution. |
Waiter
This is simply a delegate, which returns some integer value. The class WaiterGallery, contain methods that will return a Waiter.
Method | Explaination |
---|---|
GetIntervalWaiter | Returns a method, which return a given amount of time, converted to milliseconds. |
GetTODWaiter | Returns a method which returns the TimeUntil the closest TimeOfDay, of a given list |
Routine/IRoutine
These are delegates (or an object with a method) that, take no parameters, and return nothing. They also come in asynchronous variants.
Executor
An object that can get Routines added to it, and has a method for executing those Routines. There are currently three predefined Executors.
Executor | Explaination |
---|---|
SequentialExecutor | Executes its Routines, in the order that they were added, awaiting asynchronous Routines before moving on. |
ParallelExecutor | Uses Parallel.ForEach, to execute all its Routines in parallel. All the Routines will finish before the execution is complete. |
SplitExecutor | Will start execution of asynchronous Routines first, then run synchronous Routines, and finally the asynchronous Routines will be awaited. |
TimedService
This class allows for repeated timed execution of Routines. It has two Waiters, a pre and a post, aswell as an Executor. The service, when started, will start a loop on a seperate thread, which will wait for however long its pre-Waiter dictates, the Executor will then execute the added Routines, then wait for however long its post-Waiter dictates, and repeat.
Both Waiters default to a Waiter that returns 0.
It is possible to stop the service, although the service will finish what it is doing, including waiting, before stopping.
A few predefined TimedServices are provided, aswell as CustomTimedService for which it is possible to specify the combination of Waiters and Executor, that is required.
Product | Versions 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. |
-
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 |
---|---|---|
0.1.0 | 249 | 6/26/2022 |