Improve ParallelForEach extensions

This commit is contained in:
Sipke Schoorstra 2021-03-23 16:14:16 +01:00
parent 61b57de61c
commit d6d44ff57b

View file

@ -1,5 +1,6 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.CompilerServices;
using Elsa.Builders;
using Elsa.Services.Models;
@ -18,28 +19,28 @@ namespace Elsa.Activities.ControlFlow
[CallerFilePath] string? sourceFile = default) =>
builder.Then(setup, branch => iterate(branch.When(OutcomeNames.Iterate)), lineNumber, sourceFile);
public static IActivityBuilder ParallelForEach(
public static IActivityBuilder ParallelForEach<T>(
this IBuilder builder,
Func<ActivityExecutionContext, ICollection<object>> items,
Func<ActivityExecutionContext, ICollection<T>> items,
Action<IOutcomeBuilder> iterate,
[CallerLineNumber] int lineNumber = default,
[CallerFilePath] string? sourceFile = default) =>
builder.ParallelForEach(activity => activity.Set(x => x.Items, items), iterate, lineNumber, sourceFile);
builder.ParallelForEach(activity => activity.Set(x => x.Items, context => items(context).Cast<object>()), iterate, lineNumber, sourceFile);
public static IActivityBuilder ParallelForEach(
public static IActivityBuilder ParallelForEach<T>(
this IBuilder builder,
Func<ICollection<object>> items,
Func<ICollection<T>> items,
Action<IOutcomeBuilder> iterate,
[CallerLineNumber] int lineNumber = default,
[CallerFilePath] string? sourceFile = default) =>
builder.ParallelForEach(activity => activity.Set(x => x.Items, items), iterate, lineNumber, sourceFile);
builder.ParallelForEach(activity => activity.Set(x => x.Items, () => items().Cast<object>()), iterate, lineNumber, sourceFile);
public static IActivityBuilder ParallelForEach(
public static IActivityBuilder ParallelForEach<T>(
this IBuilder builder,
ICollection<object> items,
ICollection<T> items,
Action<IOutcomeBuilder> iterate,
[CallerLineNumber] int lineNumber = default,
[CallerFilePath] string? sourceFile = default) =>
builder.ParallelForEach(activity => activity.Set(x => x.Items, items), iterate, lineNumber, sourceFile);
builder.ParallelForEach(activity => activity.Set(x => x.Items, items.Cast<object>()), iterate, lineNumber, sourceFile);
}
}