Share via


Activity Designer ParallelForEach

L'attività ParallelForEach<T> enumera gli elementi di una raccolta ed esegue in parallelo un'istruzione incorporata per ogni elemento della raccolta, ovvero in modo asincrono sullo stesso thread. Usare questa attività di controllo del flusso anziché l'attività Sequence se si prevede che le relative attività figlio diventeranno inattive.

L'attività ParallelForEach<T> ha una CompletionCondition proprietà che contiene un'espressione di Visual Basic specificata dall'utente. L'attività ParallelForEach<T> valuta tale proprietà in seguito al completamento di ogni ramo. Se restituisce true, l'attività ParallelForEach<T> viene completata senza eseguire gli altri rami. Se non CompletionCondition restituisce true, l'attività ParallelForEach<T> viene completata al termine di tutte le attività figlio.

Attività ParallelForEach<T>

ParallelForEach<T> enumera i relativi valori e pianifica l'oggetto Body per ogni valore in cui enumera. Esegue la pianificazione solo per l'elemento Body. La modalità di esecuzione del corpo varia a seconda che Body diventi o meno inattivo.

Se Body non diventa inattivo, viene eseguito in ordine inverso in quanto le attività pianificate vengono gestite come uno stack, con l'ultima attività pianificata eseguita per prima. Ad esempio, se si dispone di una raccolta di {1,2,3,4}in ParallelForEach<T> e si usa writeLine come corpo per scrivere il valore. Hai 4, 3, 2, 1 stampato nella console. Questo perché WriteLine non passa inattiva, quindi dopo 4 attività WriteLine sono pianificate, vengono eseguite usando un comportamento dello stack (prima nell'ultimo out).

Il processo cambia se invece le attività incluse in Body possono diventare inattive, come nel caso delle attività Receive o Delay. Quindi non è necessario attenderne il completamento. ParallelForEach<T> passa all'attività corpo pianificata successiva e prova a eseguirla. Se anche questa attività diventa inattiva, ParallelForEach<T> passa ancora alla successiva attività Body.

Uso dell'ActivityDesigner ParallelForEach<T>

Accedere all'ActivityDesigner ParallelForEach<T> nella categoria Flusso di controllo della casella degli strumenti.

L'ActivityDesigner ParallelForEach<T> può essere trascinato dalla casella degli strumenti e rilasciato nell'area progettazione flussi di lavoro ovunque gli ActivityDesigner siano normalmente posizionati, ad esempio, all'interno di un ActivityDesigner Sequence. Dopo l'eliminazione in Progettazione flussi di lavoro, viene creata un'attività ParallelForEach<T> , che per impostazione predefinita contiene un DisplayName oggetto ParallelForEach<Int32>.

Proprietà ParallelForEach<T> in Progettazione flussi di lavoro

Nella tabella seguente sono elencate le proprietà più utili dell'attività ParallelForEach<T> e ne viene descritta la modalità di utilizzo nella finestra di progettazione.

Nome proprietà Richiesto Utilizzo
DisplayName Falso Specifica il nome descrittivo visualizzato nell'intestazione dell'ActivityDesigner. Il valore predefinito è ParallelForEach<Int32>. Il valore può essere facoltativamente modificato nella griglia Proprietà o direttamente nell'intestazione dell'ActivityDesigner.
Body Falso Attività da eseguire per ogni elemento della raccolta. Per aggiungere l'attività, eliminare un'attività Body dalla casella degli strumenti nella casella Corpo dell'ActivityDesigner ParallelForEach<T> con il testo del suggerimento "Drop Activity Here".
TypeArgument Vero Tipo degli elementi nella Values raccolta specificata dal parametro generico T. Per impostazione predefinita, TypeArgument è impostato su Int32. Per modificare il tipo T nell'ActivityDesigner ParallelForEach<T> , modificare il valore della casella combinata TypeArgument nella griglia delle proprietà.
Values Vero Raccolta di elementi da scorrere. Per impostare , digitare un'espressione Valuesdi Visual Basic nella casella Valori dell'ActivityDesigner ForEach<T> nella casella con il testo del suggerimento "Immettere un'espressione VB" o nella casella Valori della finestra Proprietà.
CompletionCondition Valutato al termine di ogni iterazione. Se restituisce true, le iterazioni in sospeso pianificate vengono annullate. Se questa proprietà non è impostata, tutte le istruzioni pianificate vengono eseguite fino al completamento.

Per impostazione predefinita, l'iteratore del ciclo è denominato item. È possibile modificare il nome della variabile iteratore nella casella ForEach in ParallelForEach<T> ActivityDesignerDesigner. L'iteratore del ciclo può essere usato nelle espressioni contenute in elementi figlio dell'attività ParallelForEach<T>.

Vedi anche