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)
}
},
}
}
}
},
Комментарии
Внедренные инструкции планируются вместе и выполняются асинхронно, но если сами запланированные действия не являются асинхронными (например, действия обмена сообщениями или действия, производные от 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) |