@@ -32,14 +32,14 @@ public async IAsyncEnumerable<TOutput> ExecuteAsync()
3232
3333 if ( _options . PreserveOrder )
3434 {
35- await foreach ( var result in ExecuteWithOrderPreservationAsync ( cancellationToken ) )
35+ await foreach ( var result in ExecuteWithOrderPreservationAsync ( cancellationToken ) . ConfigureAwait ( false ) )
3636 {
3737 yield return result ;
3838 }
3939 }
4040 else
4141 {
42- await foreach ( var result in ExecuteWithoutOrderPreservationAsync ( cancellationToken ) )
42+ await foreach ( var result in ExecuteWithoutOrderPreservationAsync ( cancellationToken ) . ConfigureAwait ( false ) )
4343 {
4444 yield return result ;
4545 }
@@ -62,18 +62,18 @@ private async IAsyncEnumerable<TOutput> ExecuteWithoutOrderPreservationAsync(Can
6262 // Complete output when all processing is done
6363 var completionTask = Task . Run ( async ( ) =>
6464 {
65- await producerTask ;
66- await Task . WhenAll ( consumerTasks ) ;
65+ await producerTask . ConfigureAwait ( false ) ;
66+ await Task . WhenAll ( consumerTasks ) . ConfigureAwait ( false ) ;
6767 outputChannel . Writer . Complete ( ) ;
6868 } , cancellationToken ) ;
6969
7070 // Yield results as they complete
71- await foreach ( var result in outputChannel . Reader . ReadAllAsync ( cancellationToken ) )
71+ await foreach ( var result in outputChannel . Reader . ReadAllAsync ( cancellationToken ) . ConfigureAwait ( false ) )
7272 {
7373 yield return result ;
7474 }
7575
76- await completionTask ;
76+ await completionTask . ConfigureAwait ( false ) ;
7777 }
7878
7979 private async IAsyncEnumerable < TOutput > ExecuteWithOrderPreservationAsync ( CancellationToken cancellationToken )
@@ -90,30 +90,30 @@ private async IAsyncEnumerable<TOutput> ExecuteWithOrderPreservationAsync(Cancel
9090 var orderedInputChannel = CreateOrderedInputChannel ( ) ;
9191 var producerTask = Task . Run ( async ( ) =>
9292 {
93- await ProduceOrderedAsync ( orderedInputChannel . Writer , cancellationToken ) ;
93+ await ProduceOrderedAsync ( orderedInputChannel . Writer , cancellationToken ) . ConfigureAwait ( false ) ;
9494 producerCompleted = true ;
9595 } , cancellationToken ) ;
9696
9797 // Start ordered consumer
9898 var consumerTasks = new List < Task > ( ) ;
9999 var consumerTask = Task . Run ( async ( ) =>
100100 {
101- await foreach ( var ( item , index ) in orderedInputChannel . Reader . ReadAllAsync ( cancellationToken ) )
101+ await foreach ( var ( item , index ) in orderedInputChannel . Reader . ReadAllAsync ( cancellationToken ) . ConfigureAwait ( false ) )
102102 {
103- await semaphore . WaitAsync ( cancellationToken ) ;
103+ await semaphore . WaitAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
104104 totalProduced = Math . Max ( totalProduced , index + 1 ) ;
105105 var task = ProcessOrderedItemAsync ( item , index , orderingDictionary , orderingLock , semaphore , cancellationToken ) ;
106106 consumerTasks . Add ( task ) ;
107107 }
108- await Task . WhenAll ( consumerTasks ) ;
108+ await Task . WhenAll ( consumerTasks ) . ConfigureAwait ( false ) ;
109109 } , cancellationToken ) ;
110110
111111 // Yield results in order
112112 var yieldingTask = Task . Run ( async ( ) =>
113113 {
114114 while ( ! producerCompleted || nextYieldIndex < totalProduced || orderingDictionary . Count > 0 )
115115 {
116- await orderingLock . WaitAsync ( cancellationToken ) ;
116+ await orderingLock . WaitAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
117117 TaskCompletionSource < TOutput > ? tcs = null ;
118118 var found = false ;
119119
@@ -127,29 +127,29 @@ private async IAsyncEnumerable<TOutput> ExecuteWithOrderPreservationAsync(Cancel
127127
128128 if ( found && tcs != null )
129129 {
130- await outputChannel . Writer . WriteAsync ( await tcs . Task , cancellationToken ) ;
130+ await outputChannel . Writer . WriteAsync ( await tcs . Task . ConfigureAwait ( false ) , cancellationToken ) . ConfigureAwait ( false ) ;
131131 }
132132 else if ( producerCompleted && consumerTasks . All ( t => t . IsCompleted ) && orderingDictionary . Count == 0 )
133133 {
134134 break ;
135135 }
136136 else
137137 {
138- await Task . Delay ( 10 , cancellationToken ) ;
138+ await Task . Delay ( 10 , cancellationToken ) . ConfigureAwait ( false ) ;
139139 }
140140 }
141141 outputChannel . Writer . Complete ( ) ;
142142 } , cancellationToken ) ;
143143
144144 // Yield from output channel
145- await foreach ( var result in outputChannel . Reader . ReadAllAsync ( cancellationToken ) )
145+ await foreach ( var result in outputChannel . Reader . ReadAllAsync ( cancellationToken ) . ConfigureAwait ( false ) )
146146 {
147147 yield return result ;
148148 }
149149
150- await producerTask ;
151- await consumerTask ;
152- await yieldingTask ;
150+ await producerTask . ConfigureAwait ( false ) ;
151+ await consumerTask . ConfigureAwait ( false ) ;
152+ await yieldingTask . ConfigureAwait ( false ) ;
153153 }
154154
155155 private async Task ProcessOrderedItemAsync (
@@ -162,9 +162,9 @@ private async Task ProcessOrderedItemAsync(
162162 {
163163 try
164164 {
165- var result = await _taskSelector ( item ) ;
165+ var result = await _taskSelector ( item ) . ConfigureAwait ( false ) ;
166166
167- await orderingLock . WaitAsync ( cancellationToken ) ;
167+ await orderingLock . WaitAsync ( cancellationToken ) . ConfigureAwait ( false ) ;
168168 try
169169 {
170170 var tcs = new TaskCompletionSource < TOutput > ( ) ;
@@ -218,9 +218,9 @@ private async Task ProduceAsync(ChannelWriter<TInput> writer, CancellationToken
218218 {
219219 try
220220 {
221- await foreach ( var item in _items . WithCancellation ( cancellationToken ) )
221+ await foreach ( var item in _items . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
222222 {
223- await writer . WriteAsync ( item , cancellationToken ) ;
223+ await writer . WriteAsync ( item , cancellationToken ) . ConfigureAwait ( false ) ;
224224 }
225225 }
226226 finally
@@ -234,9 +234,9 @@ private async Task ProduceOrderedAsync(ChannelWriter<(TInput, int)> writer, Canc
234234 try
235235 {
236236 var index = 0 ;
237- await foreach ( var item in _items . WithCancellation ( cancellationToken ) )
237+ await foreach ( var item in _items . WithCancellation ( cancellationToken ) . ConfigureAwait ( false ) )
238238 {
239- await writer . WriteAsync ( ( item , index ++ ) , cancellationToken ) ;
239+ await writer . WriteAsync ( ( item , index ++ ) , cancellationToken ) . ConfigureAwait ( false ) ;
240240 }
241241 }
242242 finally
@@ -254,22 +254,22 @@ private async Task ConsumeAsync(
254254 {
255255 if ( _options . IsIOBound )
256256 {
257- await foreach ( var item in reader . ReadAllAsync ( cancellationToken ) )
257+ await foreach ( var item in reader . ReadAllAsync ( cancellationToken ) . ConfigureAwait ( false ) )
258258 {
259- var result = await _taskSelector ( item ) ;
260- await writer . WriteAsync ( result , cancellationToken ) ;
259+ var result = await _taskSelector ( item ) . ConfigureAwait ( false ) ;
260+ await writer . WriteAsync ( result , cancellationToken ) . ConfigureAwait ( false ) ;
261261 }
262262 }
263263 else
264264 {
265265 await Task . Run ( async ( ) =>
266266 {
267- await foreach ( var item in reader . ReadAllAsync ( cancellationToken ) )
267+ await foreach ( var item in reader . ReadAllAsync ( cancellationToken ) . ConfigureAwait ( false ) )
268268 {
269- var result = await _taskSelector ( item ) ;
270- await writer . WriteAsync ( result , cancellationToken ) ;
269+ var result = await _taskSelector ( item ) . ConfigureAwait ( false ) ;
270+ await writer . WriteAsync ( result , cancellationToken ) . ConfigureAwait ( false ) ;
271271 }
272- } , cancellationToken ) ;
272+ } , cancellationToken ) . ConfigureAwait ( false ) ;
273273 }
274274 }
275275 catch ( OperationCanceledException )
0 commit comments