Поделиться через


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)
                    }
                },
            }
        }
    }
},

Комментарии

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

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

ParallelForEach<T>()

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

Свойства

Body

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

CacheId

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

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

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

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

Оценивается после каждого выполнения итерации.

Constraints

Возвращает коллекцию действий Constraint, которые можно настроить для выполнения проверки the 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)

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