crozone.AsyncResetEvents
1.0.0
See the version list below for details.
dotnet add package crozone.AsyncResetEvents --version 1.0.0
NuGet\Install-Package crozone.AsyncResetEvents -Version 1.0.0
<PackageReference Include="crozone.AsyncResetEvents" Version="1.0.0" />
<PackageVersion Include="crozone.AsyncResetEvents" Version="1.0.0" />
<PackageReference Include="crozone.AsyncResetEvents" />
paket add crozone.AsyncResetEvents --version 1.0.0
#r "nuget: crozone.AsyncResetEvents, 1.0.0"
#:package crozone.AsyncResetEvents@1.0.0
#addin nuget:?package=crozone.AsyncResetEvents&version=1.0.0
#tool nuget:?package=crozone.AsyncResetEvents&version=1.0.0
AsyncResetEvents
Async compatible auto and manual reset events.
Async compatible reset events
These reset events aim to serve the same purpose as the .NET AutoResetEvent and ManualResetEvent, but with async methods.
This allows events to be awaited in a manner that doesn't block the thread, allowing easy, efficient, and threadsafe signalling and synchronization.
Requirements
The library is written for NetStandard 2.0, and is entirely self-contained.
Derivative code
The code is based on Stephen Toub's async primatives implementation
It is also based on Stephen Cleary's AsyncEx library.
Implementation
AsyncAutoResetEvent and AsyncManualResetEvent both share a common underlying implementation, contained within AsyncResetEvent. The AsyncAutoResetEvent and AsyncManualResetEvent classes themselves are really just thin convenience wrappers, and all they do is set a single boolean value within AsyncResetEvent to tweak its behaviour between manual and auto modes.
The motivation for this was to provide a straightforward, maintainable, and easy to test implementation. This leads to a slightly less efficient manual reset event, but (IMHO) easier to understand and maintain code.
| Product | Versions Compatible and additional computed target framework versions. |
|---|---|
| .NET | net5.0 was computed. net5.0-windows was computed. net6.0 was computed. 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. |
| .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 was computed. |
| .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. |
-
.NETStandard 2.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.
Initial Release