C# Async Streams features NuGet Package

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}");
}
}.




Got any C# Async Streams features Question?





Info

Version: 4.0.2
Author(s): sergiis, dasync
Last Update: Wednesday, December 4, 2019
.NET Fiddle: Create the first Fiddle
Project Url: https://github.com/Dasync/AsyncEnumerable
NuGet Url: https://www.nuget.org/packages/AsyncEnumerator


Install
Install-Package AsyncEnumerator
dotnet add package AsyncEnumerator
paket add AsyncEnumerator
AsyncEnumerator Download (Unzip the "nupkg" after downloading)

.NETFramework 4.5 .NETStandard 2.0 net461 netstandard1.4 netstandard2.1
  • No dependencies.
26 packages depend on this package.


Tags



STATS

must-have-score

5

avg-downloads-per-day

1561

days-since-last-release

1844