AsyncTaskManager 1.0.1

dotnet add package AsyncTaskManager --version 1.0.1
                    
NuGet\Install-Package AsyncTaskManager -Version 1.0.1
                    
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="AsyncTaskManager" Version="1.0.1" />
                    
For projects that support PackageReference, copy this XML node into the project file to reference the package.
<PackageVersion Include="AsyncTaskManager" Version="1.0.1" />
                    
Directory.Packages.props
<PackageReference Include="AsyncTaskManager" />
                    
Project file
For projects that support Central Package Management (CPM), copy this XML node into the solution Directory.Packages.props file to version the package.
paket add AsyncTaskManager --version 1.0.1
                    
#r "nuget: AsyncTaskManager, 1.0.1"
                    
#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.
#:package AsyncTaskManager@1.0.1
                    
#:package directive can be used in C# file-based apps starting in .NET 10 preview 4. Copy this into a .cs file before any lines of code to reference the package.
#addin nuget:?package=AsyncTaskManager&version=1.0.1
                    
Install as a Cake Addin
#tool nuget:?package=AsyncTaskManager&version=1.0.1
                    
Install as a Cake Tool

Version 1.0.1

The AsyncTaskManager package provides a wrapper utility for easily spawning/handling delegates and wrapping non-async methods as async. It is easy for developers to struggle with Task creation and processing, but AsyncTaskStore is a light-weight solution that removes that barrier.

The AsyncTaskStore handles queuing, limiting simultaneously running tasks, auto-cancelling tasks after a set time period, and other async operations. .Cancelling a task can also be completed without linking your own CancellationToken first (and prevents cancelling tasks that may not have been meant to be cancelled).

There are also configurable options that are used along with the AsyncTaskStore to set the way the Tasks process. Events are also configurable via options.

A brief explanation

The Invokeable:<br> The core of the AsyncTaskStore. The Invokeable carries the "work" to be done.

The TaskProcessor:<br> A wrapper for the Invokeable:

  • Has the TaskState of the internal "task"
  • Contains any Exception that may have been thrown
  • Attempts to capture the method that initially called for cancellation when applicable
  • Carries the result of the invoked delegate when it has finished processing successfully or gracefully exited from a cancel
  • The linked CancellationToken are also exposed if other tasks not running within the TaskStore need to be linked to the TaskProcessor

The TaskStore:<br> The class that handles all of the hard work. The TaskStore is your one-stop shop for anything to do with the TaskProcessor. This is where you cancel tasks, retrieve results, await and queue additional work. You can check the TaskProcessors directly, or subscribe to events and let the TaskStore handle the rest. Each TaskStore carries its own set of event handlers so you can choose to create multiple TaskStore objects when you need to handle events in a different way.

  • Available Events:
    • OnTaskCreated - Fired when a task is created via the AsyncTaskStore
    • OnTaskCreationFaulted - Fired when the creation of the task fails
    • OnTaskStarted - Fired when the task has been removed from the queue and begins processing
    • OnTaskCompleted - Fired when the task finishes and a result is returned
    • OnTaskFaulted - Fired when the delegate throws an exception
    • OnTaskCancelling - Fired when a task is initially requested for cancellation
    • OnTaskCancelled = Fired when a task has ended based on cancellation
    • OnTaskCallbackFaulted - Fired when an assigned callback throws an exception

TaskStoreOptions:<br> Provides configuration options for the TaskStore. You can configure run options such as:<br>

  • The way callbacks are run after the completion of the initial delegate
  • The sequence of the order that callbacks and events are fired
  • The default CancellationToken assigned to each TaskProcessor
  • The way events are processed (separate thread vs. synchronously)
  • TaskProcessor default run time before self-cancelling

All events are triggered with a base EventArgs type of TaskEventArgsBase. This includes at minimum the StoreKey of the TaskStore the event was fired from, the TaskProcessor that caused the event, and the TaskProcessor's ID.

All Exception objects that are caused by the AsyncTaskManager (and not from the delegate it is invoking) originate from AsyncTaskManagerException as the base level exception.

Product 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.  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. 
Compatible target framework(s)
Included target framework(s) (in package)
Learn more about Target Frameworks and .NET Standard.
  • 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
1.0.1 276 8/24/2023
1.0.0 240 8/15/2023

1.0.1.0
Added comment documentation, additional delegate parameter validation, and more specialized exceptions for Invokeable issues