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> действия. Этот пример приведен в примере процесса корпоративной покупки .
// 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) |