AsyncEnumerator 4.0.1

Introduces IAsyncEnumerable, IAsyncEnumerator, ForEachAsync(), and ParallelForEachAsync() GitHub: https://github.com/Dasync/AsyncEnumerable PROBLEM SPACE Helps to (a) create an element provider, where producing an element can take a lot of time due to dependency on other asynchronous events (e.g. wait handles, network streams), and (b) a consumer that processes those element as soon as they are ready without blocking the thread (the processing is scheduled on a worker thread instead). EXAMPLE using Dasync.Collections; static IAsyncEnumerable<int> ProduceAsyncNumbers(int start, int end) { return new AsyncEnumerable<int>(async yield => { // Just to show that ReturnAsync can be used multiple times await yield.ReturnAsync(start); for (int number = start + 1; number <= end; number++) await yield.ReturnAsync(number); // You can break the enumeration loop with the following call: yield.Break(); // This won't be executed due to the loop break above await yield.ReturnAsync(12345); }); } // Just to compare with synchronous version of enumerator static IEnumerable<int> ProduceNumbers(int start, int end) { yield return start; for (int number = start + 1; number <= end; number++) yield return number; yield break; yield return 12345; } static async Task ConsumeNumbersAsync() { var asyncEnumerableCollection = ProduceAsyncNumbers(start: 1, end: 10); await asyncEnumerableCollection.ForEachAsync(async number => { await Console.Out.WriteLineAsync($"{number}"); }); } // Just to compare with synchronous version of enumeration static void ConsumeNumbers() { var enumerableCollection = ProduceNumbers(start: 1, end: 10); foreach (var number in enumerableCollection) { Console.Out.WriteLine($"{number}"); } }

Showing the top 20 packages that depend on AsyncEnumerator.

Packages Downloads
DotNetCore.CAP.InMemoryStorage
Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern.
2
DotNetCore.CAP.InMemoryStorage
Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern.
3
DotNetCore.CAP.InMemoryStorage
Distributed transaction solution in micro-service base on eventually consistency, also an eventbus with Outbox pattern.
4
DotNetCore.CAP.InMemoryStorage
EventBus outbox integration and eventually consistency in microservice architectures.
1
DotNetCore.CAP.InMemoryStorage
EventBus outbox integration and eventually consistency in microservice architectures.
2
DotNetCore.CAP.InMemoryStorage
EventBus outbox integration and eventually consistency in microservice architectures.
4
DotNetCore.CAP.InMemoryStorage
EventBus outbox integration and eventually consistency in microservice architectures.
5

4.0.0: Use interfaces from Microsoft.Bcl.AsyncInterfaces package in NET Standard 2.0. 3.1.0: Add support for NET Standard 2.1, consolidate interface with Microsoft's implementation. 2.2.0: New extension methods: SelectMany, Append, Prepend, OfType, Concat, Distinct, ToDictionaryAsync, ToLookupAsync, AggregateAsync. 2.1.0: New extension methods: Batch, UnionAll, Single, SingleOrDefault, DefaultIfEmpty, Cast. 2.0.0: Revise design of the library: same features, but slight paradigm shift and interface breaking changes. 1.5.0: Add support for .NET Standard, minor improvements. 1.4.2: Add finalizer to AsyncEnumerator and call Dispose in ForEachAsync and ParallelForEachAsync extension methods. 1.4.0: Add new generic type AsyncEnumeratorWithState for performance optimization. Now IAsyncEnumerator<T> is covariant. Add ForEachAsync, ParallelForeachAsync, and LINQ-style extension methods for IAsyncEnumerator. 1.2.1: New Linq-style extension methods in System.Collections.Async namespace. 1.1.0: Add ParallelForEachAsync extension methods for IEnumerable<T> and IAsyncEnumerable<T> in System.Collections.Async namespace.

.NET Framework 4.5

.NET Standard 1.4

.NET Framework 4.6.1

.NET Standard 2.0

.NET Standard 2.1

  • No dependencies.

Version Downloads Last updated
4.0.2 6 05/28/2024
4.0.1 2 05/28/2024
4.0.0 3 05/28/2024
3.1.0 6 05/28/2024
2.2.2 1 05/28/2024
2.2.1 3 05/28/2024
2.2.0 6 05/28/2024
2.1.1 3 05/28/2024
2.1.0 6 05/28/2024
2.0.1 3 05/28/2024
1.5.0 3 05/28/2024
1.4.2 4 05/28/2024
1.3.0 3 05/28/2024
1.2.3 5 05/28/2024
1.2.2 5 05/28/2024
1.2.1 3 05/28/2024
1.2.0 3 05/28/2024
1.1.3 3 05/28/2024
1.1.2 4 05/28/2024
1.0.3 7 05/28/2024