Microsoft.Extensions.AsyncState
8.10.0
Prefix Reserved
See the version list below for details.
dotnet add package Microsoft.Extensions.AsyncState --version 8.10.0
NuGet\Install-Package Microsoft.Extensions.AsyncState -Version 8.10.0
<PackageReference Include="Microsoft.Extensions.AsyncState" Version="8.10.0" />
paket add Microsoft.Extensions.AsyncState --version 8.10.0
#r "nuget: Microsoft.Extensions.AsyncState, 8.10.0"
// Install Microsoft.Extensions.AsyncState as a Cake Addin #addin nuget:?package=Microsoft.Extensions.AsyncState&version=8.10.0 // Install Microsoft.Extensions.AsyncState as a Cake Tool #tool nuget:?package=Microsoft.Extensions.AsyncState&version=8.10.0
Microsoft.Extensions.AsyncState
This provides the ability to store and retrieve objects that flow with the current asynchronous context.
It has a few advantages over using the AsyncLocal<T>
class directly:
- By abstracting the way the ambient data is stored we can use more optimized implementations, for instance when using ASP.NET Core, without exposing these components.
- Improves the performance by minimizing the number of
AsyncLocal<T>
instances required when multiple objects are shared. - Provides a way to manage the lifetime of the ambient data objects.
[!NOTE] Please note, the implementations of
IAsyncState
andIAsyncContext<T>
are not thread-safe.
Install the package
From the command-line:
dotnet add package Microsoft.Extensions.AsyncState
Or directly in the C# project file:
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.AsyncState" Version="[CURRENTVERSION]" />
</ItemGroup>
Usage Example
Registering Services
The services can be registered using the following method:
public static IServiceCollection AddAsyncState(this IServiceCollection services)
Consuming Services
The IAsyncContext<T>
can be injected wherever async state is needed. For example:
public class MyClass
{
public MyClass(IAsyncContext<MyState> asyncContext) { Context = asyncContext }
private IAsyncContext<MyState> Context { get; }
public async Task DoWork()
{
var state = Context.Get();
// or
Context.Set(new MyState());
// or
if (Context.TryGet(out var state)) { ... }
}
}
Feedback & Contributing
We welcome feedback and contributions in our GitHub repo.
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 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 Framework | net462 is compatible. net463 was computed. net47 was computed. net471 was computed. net472 was computed. net48 was computed. net481 was computed. |
-
.NETFramework 4.6.2
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.DependencyInjection.AutoActivation (>= 8.10.0)
- Microsoft.Extensions.ObjectPool (>= 8.0.10)
-
net6.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.DependencyInjection.AutoActivation (>= 8.10.0)
- Microsoft.Extensions.ObjectPool (>= 8.0.10)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.2)
- Microsoft.Extensions.DependencyInjection.AutoActivation (>= 8.10.0)
- Microsoft.Extensions.ObjectPool (>= 8.0.10)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on Microsoft.Extensions.AsyncState:
Package | Downloads |
---|---|
Microsoft.AspNetCore.AsyncState
ASP.NET initializer for async state. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Version | Downloads | Last updated |
---|---|---|
9.0.0-preview.9.24507.7 | 155 | 10/8/2024 |
9.0.0-preview.8.24460.1 | 70 | 9/10/2024 |
9.0.0-preview.7.24412.10 | 71 | 8/14/2024 |
9.0.0-preview.6.24353.1 | 135 | 7/10/2024 |
9.0.0-preview.5.24311.7 | 76 | 6/11/2024 |
9.0.0-preview.4.24271.2 | 83 | 5/21/2024 |
9.0.0-preview.3.24209.3 | 98 | 4/11/2024 |
9.0.0-preview.2.24157.4 | 102 | 3/12/2024 |
9.0.0-preview.1.24108.1 | 99 | 2/13/2024 |
8.10.0 | 299 | 10/8/2024 |
8.9.1 | 242 | 9/6/2024 |
8.9.0 | 178 | 9/5/2024 |
8.8.0 | 795 | 8/13/2024 |
8.7.0 | 574 | 7/10/2024 |
8.6.0 | 219 | 6/11/2024 |
8.5.0 | 230 | 5/14/2024 |
8.4.0 | 572 | 4/9/2024 |
8.3.0 | 409 | 3/12/2024 |
8.2.0 | 420 | 2/13/2024 |
8.1.0 | 680 | 1/9/2024 |
8.0.0 | 1,023 | 11/14/2023 |
8.0.0-rc.2.23510.2 | 124 | 10/10/2023 |
8.0.0-rc.1.23453.1 | 131 | 9/12/2023 |
8.0.0-preview.7.23407.5 | 111 | 8/8/2023 |
8.0.0-preview.6.23360.2 | 100 | 7/12/2023 |
8.0.0-preview.5.23308.3 | 86 | 6/14/2023 |
8.0.0-preview.4.23273.7 | 98 | 5/23/2023 |