UtilPack.AsyncEnumeration
1.0.0
See the version list below for details.
dotnet add package UtilPack.AsyncEnumeration --version 1.0.0
NuGet\Install-Package UtilPack.AsyncEnumeration -Version 1.0.0
<PackageReference Include="UtilPack.AsyncEnumeration" Version="1.0.0" />
paket add UtilPack.AsyncEnumeration --version 1.0.0
#r "nuget: UtilPack.AsyncEnumeration, 1.0.0"
// Install UtilPack.AsyncEnumeration as a Cake Addin #addin nuget:?package=UtilPack.AsyncEnumeration&version=1.0.0 // Install UtilPack.AsyncEnumeration as a Cake Tool #tool nuget:?package=UtilPack.AsyncEnumeration&version=1.0.0
UtilPack.AsyncEnumeration
While async enumerables are still incoming (old link: https://github.com/dotnet/roslyn/issues/261), this project aims to provide API to work with async enumerables. In the context of this project, async enumerables may be e.g. results of SQL query, or a collection of objects deserialized from e.g. network stream. The link above seems to discuss also about scenarios like sending query syntax tree of the code enumerating async enumerable to server, which will evaluate it, but this kind of asynchrony is out of the scope of this project.
The best way to start is UtilPack.AsyncEnumeration.AsyncEnumerationFactory
class.
As the name suggests, it can be used to create classes implementing various IAsyncEnumerable<T>
and IAsyncEnumerator<T>
interfaces.
Just like the synchronous System.Collections.Generic.IEnumerator<T>
interface, the enumerator starts with being positioned just before first element.
IAsyncEnumerable
This is just like its synchronous counterpart IEnumerable<T>
interface, except for asynchronous environment.
One should use EnumerateSequentiallyAsync
extension method to enumerate the items of IAsyncEnumerable<T>
.
aLINQ
This library also provides a number of methods that correspond to the ones available as LINQ methods to normal IEnumerable<T>
interface.
These methods accept both synchronous and asynchronous calllbacks.
IAsyncConcurrentEnumerable
This interface extends IAsyncEnumerable<T>
in order to allow concurrent enumeration of its items.
The IAsyncConcurrentEnumerable
may still be enumerated sequentially, but it may also be enumerated concurrently by EnumerateConcurrentlyAsync
extension method.
Observability
Both IAsyncEnumerable<T>
and IAsyncConcurrentEnumerable<T>
may also be converted to their observable counterparts using AsObservable
extension methods.
The extension methods make sure not to wrap too many items.
The observable events are listed below.
- The
BeforeEnumerationStart
event occurs just before starting enumeration in initialWaitForNextAsync
call. - The
AfterEnumerationStart
event occurs just after starting enumeration in initialWaitForNextAsync
call. - The
AfterEnumerationItemEncountered
event occurs just after next item is successfully fetched byTryGetNext
call. - The
BeforeEnumerationEnd
event occurs just beforeDispose
call. - The
AfterEnumerationEnd
events occurs just afterDispose
call.
Distribution
See NuGet package for binary distribution.
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. |
.NET Core | netcoreapp1.0 was computed. netcoreapp1.1 was computed. netcoreapp2.0 was computed. netcoreapp2.1 was computed. netcoreapp2.2 was computed. netcoreapp3.0 was computed. netcoreapp3.1 was computed. |
.NET Standard | netstandard1.0 is compatible. netstandard1.1 is compatible. netstandard1.2 was computed. netstandard1.3 was computed. netstandard1.4 was computed. netstandard1.5 was computed. netstandard1.6 was computed. netstandard2.0 was computed. netstandard2.1 was computed. |
.NET Framework | net40 is compatible. net403 was computed. net45 is compatible. net451 was computed. net452 was computed. net46 was computed. 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 | tizen30 was computed. tizen40 was computed. tizen60 was computed. |
Universal Windows Platform | uap was computed. uap10.0 was computed. |
Windows Phone | wp8 was computed. wp81 was computed. wpa81 was computed. |
Windows Store | netcore was computed. netcore45 was computed. netcore451 was computed. |
Xamarin.iOS | xamarinios was computed. |
Xamarin.Mac | xamarinmac was computed. |
Xamarin.TVOS | xamarintvos was computed. |
Xamarin.WatchOS | xamarinwatchos was computed. |
-
.NETFramework 4.0
- UtilPack (>= 1.5.0)
-
.NETFramework 4.5
- UtilPack (>= 1.5.0)
-
.NETStandard 1.0
- NETStandard.Library (>= 1.6.1)
- UtilPack (>= 1.5.0)
-
.NETStandard 1.1
- NETStandard.Library (>= 1.6.1)
- UtilPack (>= 1.5.0)
NuGet packages (1)
Showing the top 1 NuGet packages that depend on UtilPack.AsyncEnumeration:
Package | Downloads |
---|---|
CBAM.Abstractions
The Connection-Based Asynchronous Messaging (CBAM) Abstractions assembly contains types which are common for any workflow which communicates with e.g. SQL or LDAP processes using some kind of IPC connection. |
GitHub repositories
This package is not used by any popular GitHub repositories.
Added new aLINQ methods: Take, TakeWhile, Skip, SkipWhile, Aggregate, SelectMany. Added also generation classes.