AInq.Background.Startup 5.6.0

dotnet add package AInq.Background.Startup --version 5.6.0
NuGet\Install-Package AInq.Background.Startup -Version 5.6.0
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="AInq.Background.Startup" Version="5.6.0" />
For projects that support PackageReference, copy this XML node into the project file to reference the package.
paket add AInq.Background.Startup --version 5.6.0
#r "nuget: AInq.Background.Startup, 5.6.0"
#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 AInq.Background.Startup as a Cake Addin
#addin nuget:?package=AInq.Background.Startup&version=5.6.0

// Install AInq.Background.Startup as a Cake Tool
#tool nuget:?package=AInq.Background.Startup&version=5.6.0


GitHub release (latest by date) GitHub


What is it?

Background work utilities for .NET Core apps based on Hosted services. Originally designed for accessing API with strict request-per-second limit.

  • Background work queue with configurable parallelism and optional prioritizing
  • Shared resource access queue with different resource reuse strategies and optional prioritizing
  • Background data processing conveyor with different conveyor machine reuse strategies and optional prioritizing
  • Work scheduler with Cron support
  • Startup work utility

New in 4.1

    • Startup work utility moved to separate package AInq.Background.Startup
  • Minor bug fix and internal optimization

New in 4.0

    • Background work Scheduler interfaces moved to separate package AInq.Background.Scheduler.Abstraction
    • Background work Scheduler now uses Try and Maybe from AInq.Optional to pass errors logically correct to Observable
  • Background work Scheduler now uses System.Reactive instead of custom buggy IObservable<T> implementation

New in 3.0

  • New features
    • Service interaction extensions
    • Batch processing extension
    • Repeated work in IWorkScheduler
    • Work reslts in IWorkScheduler
  • Refactoring
    • Simplify basic interfaces: non-basic methods moved to extensions
    • Cleanup Helers and Extensions classes struct
    • Removed some unsued methods from WorkFactory and AccessFactory
    • Some extension methods moved form AInq.Background.Helpers namespace to AInq.Background.Extensions and AInq.Background.Interaction
    • IActivatable IStartStopppable

Packages description

Nuget AInq.Background.Abstraction

Basic interfaces and helpers library.

  • Basic interfaces and factory classes:
    • Work interfaces: IWork, IWork<TResult>, IAsyncWork, IAsyncWork<TResult>
    • WorkFactory for creating simple work instances from delegates
    • Resource access interfaces: IAccess<TResource>, IAccess<TResource, TResult>, IAsyncAccess<TResource>, IAsyncAccess<TResource, TResult>
    • AccessFactory for creating simple access instances from delegates
    • IConveyorMachine<TData, TResult> for conveyor data processing machines
    • IActivatable and IThrottling for shared resources and conveyor machines with particular usage strategies
  • Service interfaces
    • IWorkQueue and IPriorityWorkQueue for background task queue
    • IAccessQueue<TResource> and IPriorityAccessQueue<TResource> for shared resource access queue
    • IConveyor<TData, TResult> and IPriorityConveyor<TData, TResult> for background data processing conveyor
  • Helpers and extensions including methods to use services together (eg. enqueue IAccess<TResource> to IWorkQueue) if needed
Nuget AInq.Background

Queues and conveyor implementations.

  • Background work queue
    • Optional support for configurable parallelism
    • Optional support for prioritizing
    • Use WorkQueueInjection to regiter service or create for internal usage
  • Shared resource access queue
    • Support single or many resource instances with different lifetime
    • Optional support for prioritizing
    • Use AccessQueueInjection to regiter service or create for internal usage
  • Background data processing conveyor
    • Support single or many conveyor machines with different lifetime
    • Optional support for prioritizing
    • Use ConveyorInjection to regiter service or create for internal usage

You can extend functionality by implementing custom ITaskWrapper, ITaskManager or ITaskProcessor and combine with existing ones to create more service variants.

Nuget AInq.Background.Scheduler.Abstraction

Work scheduler interfaces and helpers library.

  • Service interfaces
    • IWorkScheduler for background work scheduler
  • Helpers and extensions including methods to use services together (eg. schedule IAccess<TResource> to IWorkScheduler) if needed
Nuget AInq.Background.Scheduler

Work scheduler implementation.

  • Support delayed, time-scheduled, and cron-scheduled work
  • Use WorkSchedulerInjection to regiter service or create for internal usage

You can extend functionality by implementing custom IScheduledTaskWrapper or IWorkSchedulerManager and combine with existing ones to create more service variants.

NOTE: Cronos is used for parsing Cron expressions - follow documentation for supported options. Format with seconds is supported.

Nuget AInq.Background.Enumerable

NEW Batch processing extensions for IWorkQueue, IAccessQueue<TResource> and IConveyor<TData, TResult>

Nuget AInq.Background.Startup

NEW Startup work utility for running some work before host start

Support interaction with background work queue


As for now documentation is provided in this document and by XML documentation inside packages.


These packages are in active production use, all fixes and improvements will be published after some internal testing.

If you find a bug, have a question or something else - you are friendly welcome to open an issue.


Copyright © 2020-2022 Anton Andryushchenko. AInq.Background is licensed under Apache License 2.0

Product Compatible and additional computed target framework versions.
.NET net5.0 was computed.  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 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. 
.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.

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
5.6.0 349 11/17/2023
5.5.3 282 6/20/2023
5.5.2 171 5/23/2023
5.5.1 375 12/3/2022
5.5.0 318 11/14/2022
5.5.0-preview.3 140 10/24/2022
5.5.0-preview.2 95 10/13/2022
5.5.0-preview.1 103 10/2/2022
5.4.1 488 8/9/2022
5.4.0 463 5/11/2022
5.3.1 477 3/28/2022
5.3.1-preview.2 105 3/28/2022
5.3.1-preview.1 112 3/28/2022
5.3.0 440 3/23/2022
5.3.0-rc.3 108 3/20/2022
5.3.0-rc.2 111 3/17/2022
5.3.0-rc.1 113 3/16/2022
5.2.3 461 3/9/2022
5.2.2 300 12/27/2021
5.2.1 294 12/17/2021
5.2.0 322 12/13/2021
5.1.0 323 12/3/2021
5.0.0 351 11/8/2021
5.0.0-rc.2 165 10/12/2021
5.0.0-rc.1 152 10/7/2021
4.2.0-preview.4 140 10/6/2021
4.2.0-preview.3 193 9/28/2021
4.2.0-preview.2 158 9/15/2021
4.2.0-preview 150 8/23/2021
4.1.2 416 5/14/2021 383 5/14/2021
4.1.1 361 5/10/2021
4.1.0 352 4/25/2021

[ADD] .Net 8 support
[UPD] Dependencies