|
3 | 3 | <metadata>
|
4 | 4 | <id>AsyncEnumerator</id>
|
5 | 5 | <version>4.0.2</version>
|
6 |
| - <authors>sergiis,dasync</authors> |
7 |
| - <license type="expression">MIT</license> |
8 |
| - <projectUrl>https://github.com/Dasync/AsyncEnumerable</projectUrl> |
9 | 6 | <repository type="git" url="https://github.com/Dasync/AsyncEnumerable.git" commit="" />
|
10 |
| - <requireLicenseAcceptance>false</requireLicenseAcceptance> |
11 |
| - <iconUrl>https://raw.githubusercontent.com/Dasync/AsyncEnumerable/master/icon.png</iconUrl> |
12 |
| - <title>C# Async Streams features</title> |
13 |
| - <description>Introduces IAsyncEnumerable, IAsyncEnumerator, ForEachAsync(), and ParallelForEachAsync() |
14 |
| -GitHub: https://github.com/Dasync/AsyncEnumerable |
15 |
| - |
16 |
| -PROBLEM SPACE |
17 |
| - |
18 |
| -Helps to (a) create an element provider, where producing an element can take a lot of time |
19 |
| -due to dependency on other asynchronous events (e.g. wait handles, network streams), and |
20 |
| -(b) a consumer that processes those element as soon as they are ready without blocking |
21 |
| -the thread (the processing is scheduled on a worker thread instead). |
22 |
| - |
23 |
| - |
24 |
| -EXAMPLE |
25 |
| - |
26 |
| -using Dasync.Collections; |
27 |
| - |
28 |
| -static IAsyncEnumerable<int> ProduceAsyncNumbers(int start, int end) |
29 |
| -{ |
30 |
| - return new AsyncEnumerable<int>(async yield => { |
31 |
| - |
32 |
| - // Just to show that ReturnAsync can be used multiple times |
33 |
| - await yield.ReturnAsync(start); |
34 |
| - |
35 |
| - for (int number = start + 1; number <= end; number++) |
36 |
| - await yield.ReturnAsync(number); |
37 |
| - |
38 |
| - // You can break the enumeration loop with the following call: |
39 |
| - yield.Break(); |
40 |
| - |
41 |
| - // This won't be executed due to the loop break above |
42 |
| - await yield.ReturnAsync(12345); |
43 |
| - }); |
44 |
| -} |
45 |
| - |
46 |
| -// Just to compare with synchronous version of enumerator |
47 |
| -static IEnumerable<int> ProduceNumbers(int start, int end) |
48 |
| -{ |
49 |
| - yield return start; |
50 |
| - |
51 |
| - for (int number = start + 1; number <= end; number++) |
52 |
| - yield return number; |
53 |
| - |
54 |
| - yield break; |
55 |
| - |
56 |
| - yield return 12345; |
57 |
| -} |
58 |
| - |
59 |
| -static async Task ConsumeNumbersAsync() |
60 |
| -{ |
61 |
| - var asyncEnumerableCollection = ProduceAsyncNumbers(start: 1, end: 10); |
62 |
| - await asyncEnumerableCollection.ForEachAsync(async number => { |
63 |
| - await Console.Out.WriteLineAsync($"{number}"); |
64 |
| - }); |
65 |
| -} |
66 |
| - |
67 |
| -// Just to compare with synchronous version of enumeration |
68 |
| -static void ConsumeNumbers() |
69 |
| -{ |
70 |
| - var enumerableCollection = ProduceNumbers(start: 1, end: 10); |
71 |
| - foreach (var number in enumerableCollection) { |
72 |
| - Console.Out.WriteLine($"{number}"); |
73 |
| - } |
74 |
| -}</description> |
75 |
| - <summary>Introduces IAsyncEnumerable, IAsyncEnumerator, ForEachAsync(), and ParallelForEachAsync()</summary> |
76 |
| - <releaseNotes> |
77 |
| -4.0.0: Use interfaces from Microsoft.Bcl.AsyncInterfaces package in NET Standard 2.0. |
78 |
| -3.1.0: Add support for NET Standard 2.1, consolidate interface with Microsoft's implementation. |
79 |
| -2.2.0: New extension methods: SelectMany, Append, Prepend, OfType, Concat, Distinct, ToDictionaryAsync, ToLookupAsync, AggregateAsync. |
80 |
| -2.1.0: New extension methods: Batch, UnionAll, Single, SingleOrDefault, DefaultIfEmpty, Cast. |
81 |
| -2.0.0: Revise design of the library: same features, but slight paradigm shift and interface breaking changes. |
82 |
| -1.5.0: Add support for .NET Standard, minor improvements. |
83 |
| -1.4.2: Add finalizer to AsyncEnumerator and call Dispose in ForEachAsync and ParallelForEachAsync extension methods. |
84 |
| -1.4.0: Add new generic type AsyncEnumeratorWithState for performance optimization. |
85 |
| - Now IAsyncEnumerator<T> is covariant. |
86 |
| - Add ForEachAsync, ParallelForeachAsync, and LINQ-style extension methods for IAsyncEnumerator. |
87 |
| -1.2.1: New Linq-style extension methods in System.Collections.Async namespace. |
88 |
| -1.1.0: Add ParallelForEachAsync extension methods for IEnumerable<T> and IAsyncEnumerable<T> in System.Collections.Async namespace. |
89 |
| - </releaseNotes> |
90 |
| - <tags>IAsyncEnumerable IAsyncEnumerator ForEachAsync ParallelForEachAsync async await foreach parallel async-streams linq charp .net</tags> |
91 |
| - <dependencies> |
92 |
| - <group targetFramework=".NETFramework4.5"> |
93 |
| - <dependency id="System.Threading.Tasks.Extensions" version="4.5.0" exclude="Build,Analyzers" /> |
94 |
| - </group> |
95 |
| - <group targetFramework=".NETStandard1.4"> |
96 |
| - <dependency id="System.Threading.Tasks.Extensions" version="4.5.0" exclude="Build,Analyzers" /> |
97 |
| - </group> |
98 |
| - <group targetFramework=".NETFramework4.6.1"> |
99 |
| - <dependency id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" exclude="Build,Analyzers" /> |
100 |
| - <dependency id="System.Threading.Tasks.Extensions" version="4.5.2" exclude="Build,Analyzers" /> |
101 |
| - </group> |
102 |
| - <group targetFramework=".NETStandard2.0"> |
103 |
| - <dependency id="Microsoft.Bcl.AsyncInterfaces" version="1.0.0" exclude="Build,Analyzers" /> |
104 |
| - <dependency id="System.Threading.Tasks.Extensions" version="4.5.2" exclude="Build,Analyzers" /> |
105 |
| - </group> |
106 |
| - <group targetFramework=".NETStandard2.1"> |
107 |
| - </group> |
108 |
| - </dependencies> |
| 7 | + <title>AsyncEnumerator symbols</title> |
| 8 | + <description>AsyncEnumerator symbols</description> |
| 9 | + <summary>AsyncEnumerator symbols</summary> |
| 10 | + <packageTypes> |
| 11 | + <packageType name="SymbolsPackage" /> |
| 12 | + </packageTypes> |
109 | 13 | </metadata>
|
110 | 14 | <files>
|
111 | 15 | <file src="netfx45\lib\bin\Release\AsyncEnumerable.pdb" target="lib\net45\AsyncEnumerable.pdb" />
|
|
0 commit comments