@@ -21,9 +21,10 @@ public static class Async
2121 public static async Task < List < TResult > > MapAsync < T , TResult > (
2222 this IList < T > list ,
2323 int concurrency ,
24- Func < T , Task < TResult > > processor ,
24+ Func < T , CancellationToken , Task < TResult > > processor ,
2525 Action < BatchProgress > ? progress = null ,
26- CancellationToken cancellationToken = default )
26+ CancellationToken cancellationToken = default
27+ )
2728 {
2829 ArgumentVerify . ThrowIfNullOrEmpty ( list , nameof ( list ) ) ;
2930 ArgumentVerify . ThrowIfLessThanEqualZero ( concurrency , nameof ( concurrency ) ) ;
@@ -36,7 +37,7 @@ public static async Task<List<TResult>> MapAsync<T, TResult>(
3637
3738 private static async Task < List < TResult > > MapSequentialAsync < T , TResult > (
3839 IList < T > list ,
39- Func < T , Task < TResult > > processor ,
40+ Func < T , CancellationToken , Task < TResult > > processor ,
4041 Action < BatchProgress > ? progress ,
4142 CancellationToken cancellationToken
4243 )
@@ -46,7 +47,7 @@ CancellationToken cancellationToken
4647 {
4748 cancellationToken . ThrowIfCancellationRequested ( ) ;
4849
49- var result = await processor ( list [ i ] ) ;
50+ var result = await processor ( list [ i ] , cancellationToken ) ;
5051 results . Add ( result ) ;
5152 if ( progress is not null )
5253 {
@@ -59,7 +60,7 @@ CancellationToken cancellationToken
5960 private static async Task < List < TResult > > MapConcurrentAsync < T , TResult > (
6061 IList < T > list ,
6162 int concurrency ,
62- Func < T , Task < TResult > > processor ,
63+ Func < T , CancellationToken , Task < TResult > > processor ,
6364 Action < BatchProgress > ? progress ,
6465 CancellationToken cancellationToken
6566 )
@@ -72,7 +73,7 @@ CancellationToken cancellationToken
7273
7374 int batchSize = Math . Min ( concurrency , totalCount - startAt ) ;
7475 var batch = list . Slice ( startAt , batchSize ) ;
75- var tasks = batch . Map < T , Task < TResult > > ( processor ) ;
76+ var tasks = batch . Map < T , Task < TResult > > ( ( t ) => processor ( t , cancellationToken ) ) ;
7677
7778 var batchResults = await Task . WhenAll ( tasks ) ;
7879
0 commit comments