/// <summary> /// Returns a query whose results evaluate asynchronously and uses the /// given scheduler for the workhorse task. /// </summary> /// <typeparam name="T">The type of the source elements.</typeparam> /// <param name="source">The source sequence.</param> /// <param name="value">The scheduler to use.</param> /// <returns> /// A query whose results evaluate asynchronously and uses the /// given scheduler for the workhorse task.</returns> public static IAwaitQuery <T> Scheduler <T>(this IAwaitQuery <T> source, TaskScheduler value) { if (source == null) { throw new ArgumentNullException(nameof(source)); } if (value == null) { throw new ArgumentNullException(nameof(value)); } return(source.WithOptions(source.Options.WithScheduler(value))); }
/// <summary> /// Returns a query whose results evaluate asynchronously and a Boolean /// argument indicating whether the source order of the results is /// preserved. /// </summary> /// <typeparam name="T">The type of the source elements.</typeparam> /// <param name="source">The source sequence.</param> /// <param name="value"> /// A Boolean where <c>true</c> means results are in source order and /// <c>false</c> means that results can be delivered in order of /// efficiency.</param> /// <returns> /// A query whose results evaluate asynchronously and returns the /// results ordered or unordered based on <paramref name="value"/>. /// </returns> public static IAwaitQuery <T> PreserveOrder <T>(this IAwaitQuery <T> source, bool value) => source.WithOptions(source.Options.WithPreserveOrder(value));
/// <summary> /// Returns a query whose results evaluate asynchronously but which /// are returned without guarantee of the source order. /// </summary> /// <typeparam name="T">The type of the source elements.</typeparam> /// <param name="source">The source sequence.</param> /// <returns> /// A query whose results evaluate asynchronously but which /// are returned without guarantee of the source order.</returns> public static IAwaitQuery <T> AsUnordered <T>(this IAwaitQuery <T> source) => PreserveOrder(source, false);
/// <summary> /// Returns a query whose results evaluate asynchronously but which /// are returned in the order of the source. /// </summary> /// <typeparam name="T">The type of the source elements.</typeparam> /// <param name="source">The source sequence.</param> /// <returns> /// A query whose results evaluate asynchronously but which /// are returned in the order of the source.</returns> /// <remarks> /// Internally, the asynchronous operations will be done concurrently /// but the results will be yielded in order. /// </remarks> public static IAwaitQuery <T> AsOrdered <T>(this IAwaitQuery <T> source) => PreserveOrder(source, true);
/// <summary> /// Returns a query whose results evaluate asynchronously and /// concurrently with no defined limitation on concurrency. /// </summary> /// <typeparam name="T">The type of the source elements.</typeparam> /// <param name="source">The source sequence.</param> /// <returns> /// A query whose results evaluate asynchronously using no defined /// limitation on concurrency.</returns> public static IAwaitQuery <T> UnboundedConcurrency <T>(this IAwaitQuery <T> source) => source.WithOptions(source.Options.WithMaxConcurrency(null));
/// <summary> /// Returns a query whose results evaluate asynchronously to use a /// concurrency limit. /// </summary> /// <typeparam name="T">The type of the source elements.</typeparam> /// <param name="source">The source sequence.</param> /// <param name="value"></param> /// <returns> /// A query whose results evaluate asynchronously using the given /// concurrency limit.</returns> public static IAwaitQuery <T> MaxConcurrency <T>(this IAwaitQuery <T> source, int value) => source.WithOptions(source.Options.WithMaxConcurrency(value));
/// <summary> /// Converts a query whose results evaluate asynchronously to use /// sequential instead of concurrent evaluation. /// </summary> /// <typeparam name="T">The type of the source elements.</typeparam> /// <param name="source">The source sequence.</param> /// <returns>The converted sequence.</returns> public static IEnumerable <T> AsSequential <T>(this IAwaitQuery <T> source) => source.MaxConcurrency(1);