|
@@ -7,7 +7,14 @@ using System.Runtime.CompilerServices;
|
|
|
|
|
|
namespace System.Threading.Tasks
|
|
|
{
|
|
|
- public static class AsyncEnumerableExtensions
|
|
|
+
|
|
|
+ // This type is only public for ref assms < .NET Standard 2.1 and implementations
|
|
|
+#if !BCL_HAS_CONFIGUREAWAIT || !REFERENCE_ASSEMBLY
|
|
|
+ public
|
|
|
+#else
|
|
|
+ internal
|
|
|
+#endif
|
|
|
+ static class AsyncEnumerableExtensions
|
|
|
{
|
|
|
#if !BCL_HAS_CONFIGUREAWAIT // https://github.com/dotnet/coreclr/pull/21939
|
|
|
|
|
@@ -37,8 +44,9 @@ namespace System.Threading.Tasks
|
|
|
new ConfiguredCancelableAsyncEnumerable<T>(source, continueOnCapturedContext: true, cancellationToken);
|
|
|
|
|
|
|
|
|
-#elif !REFERENCE_ASSEMBLY
|
|
|
- // we need to carry an impl that delegates to the BCL version of these
|
|
|
+#else
|
|
|
+ // we need to carry an impl that delegates to the BCL version of these in the lib
|
|
|
+ // They won't be in the ref
|
|
|
|
|
|
/// <summary>Configures how awaits on the tasks returned from an async disposable will be performed.</summary>
|
|
|
/// <param name="source">The source async disposable.</param>
|
|
@@ -65,35 +73,6 @@ namespace System.Threading.Tasks
|
|
|
[MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
public static ConfiguredCancelableAsyncEnumerable<T> WithCancellation<T>(
|
|
|
this IAsyncEnumerable<T> source, CancellationToken cancellationToken) => TaskExtensions.WithCancellation(source, cancellationToken);
|
|
|
-
|
|
|
-#else
|
|
|
- // Reference assembly, these won't be emitted, but keep these internal so we can compile
|
|
|
-
|
|
|
- /// <summary>Configures how awaits on the tasks returned from an async disposable will be performed.</summary>
|
|
|
- /// <param name="source">The source async disposable.</param>
|
|
|
- /// <param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
|
|
|
- /// <returns>The configured async disposable.</returns>
|
|
|
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- internal static ConfiguredAsyncDisposable ConfigureAwait(this IAsyncDisposable source, bool continueOnCapturedContext) =>
|
|
|
- TaskExtensions.ConfigureAwait(source, continueOnCapturedContext);
|
|
|
-
|
|
|
- /// <summary>Configures how awaits on the tasks returned from an async iteration will be performed.</summary>
|
|
|
- /// <typeparam name="T">The type of the objects being iterated.</typeparam>
|
|
|
- /// <param name="source">The source enumerable being iterated.</param>
|
|
|
- /// <param name="continueOnCapturedContext">Whether to capture and marshal back to the current context.</param>
|
|
|
- /// <returns>The configured enumerable.</returns>
|
|
|
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- internal static ConfiguredCancelableAsyncEnumerable<T> ConfigureAwait<T>(
|
|
|
- this IAsyncEnumerable<T> source, bool continueOnCapturedContext) => TaskExtensions.ConfigureAwait(source, continueOnCapturedContext);
|
|
|
-
|
|
|
- /// <summary>Sets the <see cref="CancellationToken"/> to be passed to <see cref="IAsyncEnumerable{T}.GetAsyncEnumerator(CancellationToken)"/> when iterating.</summary>
|
|
|
- /// <typeparam name="T">The type of the objects being iterated.</typeparam>
|
|
|
- /// <param name="source">The source enumerable being iterated.</param>
|
|
|
- /// <param name="cancellationToken">The <see cref="CancellationToken"/> to use.</param>
|
|
|
- /// <returns>The configured enumerable.</returns>
|
|
|
- [MethodImpl(MethodImplOptions.AggressiveInlining)]
|
|
|
- internal static ConfiguredCancelableAsyncEnumerable<T> WithCancellation<T>(
|
|
|
- this IAsyncEnumerable<T> source, CancellationToken cancellationToken) => TaskExtensions.WithCancellation(source, cancellationToken);
|
|
|
#endif
|
|
|
}
|
|
|
}
|