AsyncEnumerator 1.2.0

Introduces IAsyncEnumerable, IAsyncEnumerator, ForEachAsync(), and ParallelForEachAsync() GitHub: https://github.com/tyrotoxin/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 System.Collections.Async; 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() { // NOTE: IAsyncEnumerable is derived from IEnumerable, so you can use either var enumerableCollection = ProduceAsyncNumbers(start: 1, end: 10); //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

Contract breaking changes in ParallelForEachAsync: introduce ParallelForEachException to unify error outcome of the loop.

This package has 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 3 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