@@ -4,14 +4,15 @@ public static partial class AsyncLinq
44{
55 public static async Task < T > AggregateAsync < T > ( this IAsyncEnumerable < T > source , Func < T , T , T > func , CancellationToken cancellationToken = default )
66 {
7- await using var enumerator = source . GetAsyncEnumerator ( cancellationToken ) ;
8-
9- if ( ! await enumerator . MoveNextAsync ( ) )
7+ var enumerator = source . GetAsyncEnumerator ( cancellationToken ) ;
8+ await using var disposableEnumerator = enumerator . ConfigureAwait ( false ) ;
9+
10+ if ( ! await enumerator . MoveNextAsync ( ) . ConfigureAwait ( false ) )
1011 throw new InvalidOperationException ( "The sequence contains no element" ) ;
1112
1213 T current = enumerator . Current ;
1314
14- while ( await enumerator . MoveNextAsync ( ) )
15+ while ( await enumerator . MoveNextAsync ( ) . ConfigureAwait ( false ) )
1516 current = func ( current , enumerator . Current ) ;
1617
1718 return current ;
@@ -30,23 +31,24 @@ public static async Task<T> AggregateAsync<T>(this IEnumerable<T> source, Func<T
3031 while ( enumerator . MoveNext ( ) )
3132 {
3233 cancellationToken . ThrowIfCancellationRequested ( ) ;
33- current = await func ( current , enumerator . Current ) ;
34+ current = await func ( current , enumerator . Current ) . ConfigureAwait ( false ) ;
3435 }
3536
3637 return current ;
3738 }
3839
3940 public static async Task < T > AggregateAsync < T > ( this IAsyncEnumerable < T > source , Func < T , T , Task < T > > func , CancellationToken cancellationToken = default )
4041 {
41- await using var enumerator = source . GetAsyncEnumerator ( cancellationToken ) ;
42+ var enumerator = source . GetAsyncEnumerator ( cancellationToken ) ;
43+ await using var disposableEnumerator = enumerator . ConfigureAwait ( false ) ;
4244
43- if ( ! await enumerator . MoveNextAsync ( ) )
45+ if ( ! await enumerator . MoveNextAsync ( ) . ConfigureAwait ( false ) )
4446 throw new InvalidOperationException ( "The sequence contains no element" ) ;
4547
4648 T current = enumerator . Current ;
4749
48- while ( await enumerator . MoveNextAsync ( ) )
49- current = await func ( current , enumerator . Current ) ;
50+ while ( await enumerator . MoveNextAsync ( ) . ConfigureAwait ( false ) )
51+ current = await func ( current , enumerator . Current ) . ConfigureAwait ( false ) ;
5052
5153 return current ;
5254 }
@@ -55,7 +57,7 @@ public static async Task<TAccumulate> AggregateAsync<TSource, TAccumulate>(this
5557 {
5658 var current = seed ;
5759
58- await foreach ( var item in source . WithCancellation ( cancellationToken ) )
60+ await foreach ( var item in source . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
5961 current = func ( current , item ) ;
6062
6163 return current ;
@@ -69,7 +71,7 @@ public static async Task<TAccumulate> AggregateAsync<TSource, TAccumulate>(this
6971 foreach ( var item in source )
7072 {
7173 cancellationToken . ThrowIfCancellationRequested ( ) ;
72- current = await func ( current , item ) ;
74+ current = await func ( current , item ) . ConfigureAwait ( false ) ;
7375 }
7476
7577 return current ;
@@ -79,8 +81,8 @@ public static async Task<TAccumulate> AggregateAsync<TSource, TAccumulate>(this
7981 {
8082 var current = seed ;
8183
82- await foreach ( var item in source . WithCancellation ( cancellationToken ) )
83- current = await func ( current , item ) ;
84+ await foreach ( var item in source . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
85+ current = await func ( current , item ) . ConfigureAwait ( false ) ;
8486
8587 return current ;
8688 }
@@ -89,7 +91,7 @@ public static async Task<TResult> AggregateAsync<TSource, TAccumulate, TResult>(
8991 {
9092 var current = seed ;
9193
92- await foreach ( var item in source . WithCancellation ( cancellationToken ) )
94+ await foreach ( var item in source . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
9395 current = func ( current , item ) ;
9496
9597 return resultSelector ( current ) ;
@@ -103,7 +105,7 @@ public static async Task<TResult> AggregateAsync<TSource, TAccumulate, TResult>(
103105 foreach ( var item in source )
104106 {
105107 cancellationToken . ThrowIfCancellationRequested ( ) ;
106- current = await func ( current , item ) ;
108+ current = await func ( current , item ) . ConfigureAwait ( false ) ;
107109 }
108110
109111 return resultSelector ( current ) ;
@@ -113,8 +115,8 @@ public static async Task<TResult> AggregateAsync<TSource, TAccumulate, TResult>(
113115 {
114116 var current = seed ;
115117
116- await foreach ( var item in source . WithCancellation ( cancellationToken ) )
117- current = await func ( current , item ) ;
118+ await foreach ( var item in source . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
119+ current = await func ( current , item ) . ConfigureAwait ( false ) ;
118120
119121 return resultSelector ( current ) ;
120122 }
@@ -130,17 +132,17 @@ public static async Task<TResult> AggregateAsync<TSource, TAccumulate, TResult>(
130132 current = func ( current , item ) ;
131133 }
132134
133- return await resultSelector ( current ) ;
135+ return await resultSelector ( current ) . ConfigureAwait ( false ) ;
134136 }
135137
136138 public static async Task < TResult > AggregateAsync < TSource , TAccumulate , TResult > ( this IAsyncEnumerable < TSource > source , TAccumulate seed , Func < TAccumulate , TSource , TAccumulate > func , Func < TAccumulate , Task < TResult > > resultSelector , CancellationToken cancellationToken = default )
137139 {
138140 var current = seed ;
139141
140- await foreach ( var item in source . WithCancellation ( cancellationToken ) )
142+ await foreach ( var item in source . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
141143 current = func ( current , item ) ;
142144
143- return await resultSelector ( current ) ;
145+ return await resultSelector ( current ) . ConfigureAwait ( false ) ;
144146 }
145147
146148 public static async Task < TResult > AggregateAsync < TSource , TAccumulate , TResult > ( this IEnumerable < TSource > source , TAccumulate seed , Func < TAccumulate , TSource , Task < TAccumulate > > func , Func < TAccumulate , Task < TResult > > resultSelector , CancellationToken cancellationToken = default )
@@ -151,19 +153,19 @@ public static async Task<TResult> AggregateAsync<TSource, TAccumulate, TResult>(
151153 foreach ( var item in source )
152154 {
153155 cancellationToken . ThrowIfCancellationRequested ( ) ;
154- current = await func ( current , item ) ;
156+ current = await func ( current , item ) . ConfigureAwait ( false ) ;
155157 }
156158
157- return await resultSelector ( current ) ;
159+ return await resultSelector ( current ) . ConfigureAwait ( false ) ;
158160 }
159161
160162 public static async Task < TResult > AggregateAsync < TSource , TAccumulate , TResult > ( this IAsyncEnumerable < TSource > source , TAccumulate seed , Func < TAccumulate , TSource , Task < TAccumulate > > func , Func < TAccumulate , Task < TResult > > resultSelector , CancellationToken cancellationToken = default )
161163 {
162164 var current = seed ;
163165
164- await foreach ( var item in source . WithCancellation ( cancellationToken ) )
165- current = await func ( current , item ) ;
166+ await foreach ( var item in source . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
167+ current = await func ( current , item ) . ConfigureAwait ( false ) ;
166168
167- return await resultSelector ( current ) ;
169+ return await resultSelector ( current ) . ConfigureAwait ( false ) ;
168170 }
169171}
0 commit comments