protected static async Task CompleteBatchOperationsAsync( IReadOnlyList <ResolverContext> batch, BatchOperationHandler batchOperationHandler, CancellationToken cancellationToken) { Debug.Assert(batch != null); Debug.Assert(batchOperationHandler != null); Task[] tasks = ArrayPool <Task> .Shared.Rent(batch.Count); for (int i = 0; i < batch.Count; i++) { tasks[i] = batch[i].Task; } var taskMemory = new Memory <Task>(tasks); taskMemory = taskMemory.Slice(0, batch.Count); try { await batchOperationHandler.CompleteAsync( taskMemory, cancellationToken) .ConfigureAwait(false); } finally { ArrayPool <Task> .Shared.Return(tasks); } }
protected static Task CompleteBatchOperationsAsync( IReadOnlyCollection <Task> tasks, BatchOperationHandler batchOperationHandler, CancellationToken cancellationToken) { return((batchOperationHandler == null) ? Task.CompletedTask : batchOperationHandler.CompleteAsync( tasks, cancellationToken)); }