ParallelForEach<T> Класс

Определение

Перечисляет элементы коллекции и выполняет внедренную инструкцию для каждого элемента коллекции параллельно.

generic <typename T>
public ref class ParallelForEach sealed : System::Activities::NativeActivity
[System.Windows.Markup.ContentProperty("Body")]
public sealed class ParallelForEach<T> : System.Activities.NativeActivity
[<System.Windows.Markup.ContentProperty("Body")>]
type ParallelForEach<'T> = class
    inherit NativeActivity
Public NotInheritable Class ParallelForEach(Of T)
Inherits NativeActivity

Параметры типа

T

Тип значений, предоставленных в Values коллекции.

Наследование
ParallelForEach<T>
Атрибуты

Примеры

В следующем примере кода показано создание ParallelForEach<T> действия. Этот пример приведен в примере процесса корпоративной покупки .

// invite all vendors and wait for their proposals
new ParallelForEach<Vendor>
{
    DisplayName = "Get vendor proposals",
    Values = new InArgument<IEnumerable<Vendor>>(ctx =>this.Rfp.Get(ctx).InvitedVendors),
    Body = new ActivityAction<Vendor>()
    {
        Argument = iterationVariableVendor,
        Handler = new Sequence
        {
            Variables = { tmpValue },
            Activities =
            {
                // waits for a vendor proposal (creates a bookmark for a vendor)
                new WaitForVendorProposal
                {
                    VendorId = new LambdaValue<int>(ctx =>iterationVariableVendor.Get(ctx).Id) ,
                    Result = new OutArgument<double>(tmpValue)
                },

                // after the vendor proposal is received, it is registered in the Request for Proposals
                new InvokeMethod
                {
                    TargetObject = new InArgument<RequestForProposal>(ctx =>this.Rfp.Get(ctx)),
                    MethodName = "RegisterProposal",
                    Parameters =
                    {
                        new InArgument<Vendor>(iterationVariableVendor),
                        new InArgument<double>(tmpValue)
                    }
                },
            }
        }
    }
},

Комментарии

Внедренные инструкции планируются вместе и выполняются асинхронно, но если запланированные действия не являются асинхронными (например, действиями обмена сообщениями, или действиями, InvokeMethodпроизводными от AsyncCodeActivity), они не выполняются в отдельных потоках, поэтому каждое последовательное действие будет выполняться только при завершении ранее запланированного действия или бездействия. Если ни одно из дочерних действий этого действия не является асинхронным или неактивным, это действие выполняется таким же образом, как ForEach<T> действие.

Конструкторы

Имя Описание
ParallelForEach<T>()

Создает новый экземпляр класса ParallelForEach<T>.

Свойства

Имя Описание
Body

Значение ActivityAction , которое выполняется один раз для каждого значения, содержащегося в Values коллекции.

CacheId

Возвращает идентификатор кэша, уникального в области определения рабочего процесса.

(Унаследовано от Activity)
CanInduceIdle

Возвращает или задает значение, указывающее, может ли действие привести к простою рабочего процесса.

(Унаследовано от NativeActivity)
CompletionCondition

Вычисляется после завершения каждой итерации.

Constraints

Возвращает коллекцию Constraint действий, которые можно настроить для проверки.Activity

(Унаследовано от Activity)
DisplayName

Возвращает или задает необязательное понятное имя, используемое для отладки, проверки, обработки исключений и отслеживания.

(Унаследовано от Activity)
Id

Возвращает идентификатор, уникальный в области определения рабочего процесса.

(Унаследовано от Activity)
Implementation

Логика выполнения действия.

(Унаследовано от NativeActivity)
ImplementationVersion

Возвращает или задает версию реализации действия.

(Унаследовано от NativeActivity)
Values

Коллекция значений, используемых в качестве параметров для каждой итерации действия, содержащегося в объекте Body.

Методы

Имя Описание
Abort(NativeActivityAbortContext)

При реализации в производном классе выполняет действия в ответ на прерванное действие.

(Унаследовано от NativeActivity)
CacheMetadata(ActivityMetadata)

Не реализовано. Используйте метод CacheMetadata(NativeActivityMetadata) вместо этого.

(Унаследовано от NativeActivity)
CacheMetadata(NativeActivityMetadata)

Создает и проверяет описание аргументов, переменных, дочерних действий и делегатов действий.

(Унаследовано от NativeActivity)
Cancel(NativeActivityContext)

При реализации в производном классе выполняет логику, чтобы вызвать правильное завершение действия.

(Унаследовано от NativeActivity)
Equals(Object)

Определяет, равен ли указанный объект текущему объекту.

(Унаследовано от Object)
Execute(NativeActivityContext)

При реализации в производном классе выполняет логику выполнения действия.

(Унаследовано от NativeActivity)
GetHashCode()

Служит хэш-функцией по умолчанию.

(Унаследовано от Object)
GetType()

Возвращает Type текущего экземпляра.

(Унаследовано от Object)
MemberwiseClone()

Создает неглубокую копию текущей Object.

(Унаследовано от Object)
OnCreateDynamicUpdateMap(NativeActivityUpdateMapMetadata, Activity)

Вызывает событие при создании карты для динамического обновления.

(Унаследовано от NativeActivity)
OnCreateDynamicUpdateMap(UpdateMapMetadata, Activity)

Вызывает событие при создании карты для динамического обновления.

(Унаследовано от NativeActivity)
ShouldSerializeDisplayName()

Указывает, следует ли DisplayName сериализовать свойство.

(Унаследовано от Activity)
ToString()

Возвращает объект String , содержащий Id и DisplayName из нее Activity.

(Унаследовано от Activity)
UpdateInstance(NativeActivityUpdateContext)

Обновляет экземпляр NativeActivity.

(Унаследовано от NativeActivity)

Применяется к