Josupeit.Practices.Schedulers.Channel
1.0.7
Prefix Reserved
dotnet add package Josupeit.Practices.Schedulers.Channel --version 1.0.7
NuGet\Install-Package Josupeit.Practices.Schedulers.Channel -Version 1.0.7
<PackageReference Include="Josupeit.Practices.Schedulers.Channel" Version="1.0.7" />
<PackageVersion Include="Josupeit.Practices.Schedulers.Channel" Version="1.0.7" />
<PackageReference Include="Josupeit.Practices.Schedulers.Channel" />
paket add Josupeit.Practices.Schedulers.Channel --version 1.0.7
#r "nuget: Josupeit.Practices.Schedulers.Channel, 1.0.7"
#:package Josupeit.Practices.Schedulers.Channel@1.0.7
#addin nuget:?package=Josupeit.Practices.Schedulers.Channel&version=1.0.7
#tool nuget:?package=Josupeit.Practices.Schedulers.Channel&version=1.0.7
Josupeit.Practices.Schedulers.Channel
When you need more control over how work is executed — ordering, bounded concurrency, back-pressure, or the ability to pause and resume — ChannelScheduler is the right tool. It backs the IScheduler interface with System.Threading.Channels, processing items in FIFO order across a configurable number of concurrent consumers.
Because it extends AsyncSchedulerService, it is a full-featured background service as well as a scheduler. It must be started before you submit work and stopped when you are done. Stopping is always graceful: pending items are declined, and running items are given time to finish before they are canceled.
dotnet add package Josupeit.Practices.Schedulers.Channel
How to use
var options = new ChannelSchedulerOptions
{
// Run items one at a time for strict sequential ordering.
DegreeOfParallelism = 1,
// Give running items up to five seconds to finish when the scheduler is stopped.
GracefulStopDelay = TimeSpan.FromSeconds(5),
};
var scheduler = new ChannelScheduler(options);
await scheduler.StartAsync();
// Both sync and async work items can be submitted.
scheduler.Schedule(() => ProcessItem());
await scheduler.ScheduleAsync(async ct => await ProcessItemAsync(ct), cancellationToken);
// Pause processing without dropping items already in the queue.
await scheduler.PauseAsync();
await scheduler.ResumeAsync();
// Stop gracefully — pending items are declined and running items are given GracefulStopDelay to finish.
await scheduler.StopAsync();
Options reference
| Property | Default | Description |
|---|---|---|
DegreeOfParallelism |
Environment.ProcessorCount |
Number of work items that may run concurrently. Set to 1 for strict sequential execution. |
GracefulStopDelay |
TimeSpan.FromSeconds(3) |
How long to wait for currently executing items when Stop is called. Set to TimeSpan.Zero to cancel running items immediately, or to a negative value to wait indefinitely. |
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
| .NET Core | netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 is compatible. 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. |
-
.NETCoreApp 3.0
- Josupeit.Practices.Schedulers.Core (>= 1.0.0 && < 2.0.0)
- Josupeit.Practices.Services (>= 1.0.0 && < 2.0.0)
- Nito.AsyncEx.Coordination (>= 5.0.0 && < 6.0.0)
-
.NETStandard 2.0
- Josupeit.Practices.Schedulers.Core (>= 1.0.0 && < 2.0.0)
- Josupeit.Practices.Services (>= 1.0.0 && < 2.0.0)
- Nito.AsyncEx.Coordination (>= 5.0.0 && < 6.0.0)
- System.Threading.Channels (>= 4.5.0 && < 8.0.0)
-
.NETStandard 2.1
- Josupeit.Practices.Schedulers.Core (>= 1.0.0 && < 2.0.0)
- Josupeit.Practices.Services (>= 1.0.0 && < 2.0.0)
- Nito.AsyncEx.Coordination (>= 5.0.0 && < 6.0.0)
- System.Threading.Channels (>= 4.5.0 && < 8.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 |
|---|---|---|
| 1.0.7 | 139 | 3/10/2026 |