Microsoft.Extensions.AsyncState
8.4.0
Prefix Reserved
See the version list below for details.
dotnet add package Microsoft.Extensions.AsyncState --version 8.4.0
NuGet\Install-Package Microsoft.Extensions.AsyncState -Version 8.4.0
<PackageReference Include="Microsoft.Extensions.AsyncState" Version="8.4.0" />
paket add Microsoft.Extensions.AsyncState --version 8.4.0
#r "nuget: Microsoft.Extensions.AsyncState, 8.4.0"
// Install Microsoft.Extensions.AsyncState as a Cake Addin #addin nuget:?package=Microsoft.Extensions.AsyncState&version=8.4.0 // Install Microsoft.Extensions.AsyncState as a Cake Tool #tool nuget:?package=Microsoft.Extensions.AsyncState&version=8.4.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.1)
- Microsoft.Extensions.DependencyInjection.AutoActivation (>= 8.4.0)
- Microsoft.Extensions.ObjectPool (>= 8.0.4)
-
net6.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
- Microsoft.Extensions.DependencyInjection.AutoActivation (>= 8.4.0)
- Microsoft.Extensions.ObjectPool (>= 8.0.4)
-
net8.0
- Microsoft.Extensions.DependencyInjection.Abstractions (>= 8.0.1)
- Microsoft.Extensions.DependencyInjection.AutoActivation (>= 8.4.0)
- Microsoft.Extensions.ObjectPool (>= 8.0.4)
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 | 1,139 | 11/12/2024 |
9.0.0-preview.9.24507.7 | 179 | 10/8/2024 |
9.0.0-preview.8.24460.1 | 81 | 9/10/2024 |
9.0.0-preview.7.24412.10 | 77 | 8/14/2024 |
9.0.0-preview.6.24353.1 | 141 | 7/10/2024 |
9.0.0-preview.5.24311.7 | 84 | 6/11/2024 |
9.0.0-preview.4.24271.2 | 91 | 5/21/2024 |
9.0.0-preview.3.24209.3 | 107 | 4/11/2024 |
9.0.0-preview.2.24157.4 | 108 | 3/12/2024 |
9.0.0-preview.1.24108.1 | 105 | 2/13/2024 |
8.10.0 | 536 | 10/8/2024 |
8.9.1 | 274 | 9/6/2024 |
8.9.0 | 196 | 9/5/2024 |
8.8.0 | 853 | 8/13/2024 |
8.7.0 | 588 | 7/10/2024 |
8.6.0 | 228 | 6/11/2024 |
8.5.0 | 243 | 5/14/2024 |
8.4.0 | 583 | 4/9/2024 |
8.3.0 | 421 | 3/12/2024 |
8.2.0 | 456 | 2/13/2024 |
8.1.0 | 690 | 1/9/2024 |
8.0.0 | 1,064 | 11/14/2023 |
8.0.0-rc.2.23510.2 | 133 | 10/10/2023 |
8.0.0-rc.1.23453.1 | 138 | 9/12/2023 |
8.0.0-preview.7.23407.5 | 117 | 8/8/2023 |
8.0.0-preview.6.23360.2 | 105 | 7/12/2023 |
8.0.0-preview.5.23308.3 | 91 | 6/14/2023 |
8.0.0-preview.4.23273.7 | 104 | 5/23/2023 |