Add CancellationToken parameter to GetAsyncEnumerator (#21397)
authorStephen Toub <stoub@microsoft.com>
Fri, 7 Dec 2018 18:56:32 +0000 (13:56 -0500)
committerGitHub <noreply@github.com>
Fri, 7 Dec 2018 18:56:32 +0000 (13:56 -0500)
src/System.Private.CoreLib/shared/System/Collections/Generic/IAsyncEnumerable.cs
src/System.Private.CoreLib/shared/System/Runtime/CompilerServices/ConfiguredAsyncEnumerable.cs

index ef02070..302b964 100644 (file)
@@ -2,6 +2,8 @@
 // The .NET Foundation licenses this file to you under the MIT license.
 // See the LICENSE file in the project root for more information.
 
+using System.Threading;
+
 namespace System.Collections.Generic
 {
     /// <summary>Exposes an enumerator that provides asynchronous iteration over values of a specified type.</summary>
@@ -9,7 +11,8 @@ namespace System.Collections.Generic
     public interface IAsyncEnumerable<out T>
     {
         /// <summary>Returns an enumerator that iterates asynchronously through the collection.</summary>
+        /// <param name="cancellationToken">A <see cref="CancellationToken"/> that may be used to cancel the asynchronous iteration.</param>
         /// <returns>An enumerator that can be used to iterate asynchronously through the collection.</returns>
-        IAsyncEnumerator<T> GetAsyncEnumerator();
+        IAsyncEnumerator<T> GetAsyncEnumerator(CancellationToken cancellationToken = default);
     }
 }
index 57fd481..2547065 100644 (file)
@@ -4,6 +4,7 @@
 
 using System.Collections.Generic;
 using System.Runtime.InteropServices;
+using System.Threading;
 using System.Threading.Tasks;
 using System.Threading.Tasks.Sources;
 
@@ -21,8 +22,8 @@ namespace System.Runtime.CompilerServices
             _continueOnCapturedContext = continueOnCapturedContext;
         }
 
-        public Enumerator GetAsyncEnumerator() =>
-            new Enumerator(_enumerable.GetAsyncEnumerator(), _continueOnCapturedContext);
+        public Enumerator GetAsyncEnumerator(CancellationToken cancellationToken = default) =>
+            new Enumerator(_enumerable.GetAsyncEnumerator(cancellationToken), _continueOnCapturedContext);
 
         public readonly struct Enumerator
         {