AsyncTaskManager 1.0.1
dotnet add package AsyncTaskManager --version 1.0.1
NuGet\Install-Package AsyncTaskManager -Version 1.0.1
<PackageReference Include="AsyncTaskManager" Version="1.0.1" />
<PackageVersion Include="AsyncTaskManager" Version="1.0.1" />
<PackageReference Include="AsyncTaskManager" />
paket add AsyncTaskManager --version 1.0.1
#r "nuget: AsyncTaskManager, 1.0.1"
#:package AsyncTaskManager@1.0.1
#addin nuget:?package=AsyncTaskManager&version=1.0.1
#tool nuget:?package=AsyncTaskManager&version=1.0.1
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
TaskStateof the internal "task" - Contains any
Exceptionthat 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
CancellationTokenare also exposed if other tasks not running within theTaskStoreneed to be linked to theTaskProcessor
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
CancellationTokenassigned to eachTaskProcessor - The way events are processed (separate thread vs. synchronously)
TaskProcessordefault 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 | 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. 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. |
-
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.
1.0.1.0
Added comment documentation, additional delegate parameter validation, and more specialized exceptions for Invokeable issues