Nota
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare ad accedere o modificare le directory.
L'accesso a questa pagina richiede l'autorizzazione. È possibile provare a modificare le directory.
L'attività ParallelForEach 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. Utilizzare questa attività di controllo del flusso anziché l'attività Sequence se si prevede che le relative attività figlio diventeranno inattive.
L'attività ParallelForEach include una proprietà CompletionCondition contenente un'espressione Visual Basic specificata dall'utente. L'attività ParallelForEach valuta tale proprietà in seguito al completamento di ogni ramo. Se restituisce true, l'attività ParallelForEach viene completata senza eseguire gli altri rami. Se CompletionCondition non restituisce true, l'attività ParallelForEach viene completata al termine di tutte le relative attività figlio.
Attività ParallelForEach<T>
ParallelForEach enumera i propri valori e pianifica l'elemento Body per ogni valore in cui viene enumerata. 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. Si supponga, ad esempio, di disporre della raccolta {1,2,3,4} in ParallelForEach e di utilizzare un elemento WriteLine come corpo in cui scrivere il valore. Nella console l'ordine di stampa sarà 4, 3, 2, 1 in quanto WriteLine non diventa inattivo e pertanto, dopo la pianificazione delle quattro attività WriteLine, queste vengono eseguite in base al comportamento tipico di uno stack (first-in last-out).
Il processo cambia se invece le attività incluse in Body possono diventare inattive, come nel caso delle attività Receive o Delay. In questo caso non è necessario attenderne il completamento. ParallelForEach passa alla successiva attività Body pianificata e prova a eseguirla. Se anche questa attività diventa inattiva, ParallelForEach passa ancora alla successiva attività Body.
Utilizzo dell'ActivityDesigner ParallelForEach<T>
L'ActivityDesigner ParallelForEach<T> è disponibile nella categoria Flusso di controllo della Casella degli strumenti, accessibile facendo clic sulla scheda Casella degli strumenti a sinistra di Progettazione flussi di lavoro. In alternativa, scegliere Barra degli strumenti dal menu Visualizza o premere CTRL+ALT+X.
È possibile trascinare l'ActivityDesigner ParallelForEach<T> dalla Casella degli strumenti e rilasciarlo nell'area di Progettazione flussi di lavoro, nel punto in cui vengono in genere posizionate le attività, ad esempio all'interno di un ActivityDesigner Sequence. Dopo averlo rilasciato in Progettazione flussi di lavoro, viene creata un'attività ParallelForEach, la cui proprietà DisplayName ha, per impostazione predefinita, il valore ParallelForEach<Int32>.
Proprietà di ParallelForEach<T> in Progettazione flussi di lavoro
Nella tabella seguente sono elencate le proprietà più utili dell'attività ParallelForEach e ne viene descritta la modalità di utilizzo nella finestra di progettazione.
| Nome proprietà | Obbligatoria | Utilizzo |
|---|---|---|
DisplayName |
False |
Specifica il nome descrittivo visualizzato nell'intestazione dell'ActivityDesigner. Il valore predefinito è ParallelForEach<Int32>. Facoltativamente, è possibile modificare il valore nella griglia Proprietà o direttamente nell'intestazione dell'ActivityDesigner. |
Body |
False |
Attività da eseguire per ogni elemento della raccolta. Per aggiungere l'attività Body, trascinare un'attività dalla casella degli strumenti e rilasciarla nella casella Body dell'ActivityDesigner ParallelForEach<T> con il testo di suggerimento "Rilasciare l'attività". |
TypeArgument |
True |
Tipo degli elementi della raccolta Values specificato dal parametro generico T. Per impostazione predefinita, la proprietà TypeArgument è impostata su Int32. Per cambiare il tipo T nell'ActivityDesigner ParallelForEach<T>, modificare il valore della casella combinata TypeArgument nella griglia delle proprietà. |
Values |
True |
Raccolta di elementi da scorrere. Per impostare Values, digitare un'espressione Visual Basic nella casella Valori dell'ActivityDesigner ForEach<T> all'interno della casella con il testo di 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 sono 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 di iteratore nella casella ForEach dell'ActivityDesigner ParallelForEach<T>. L'iteratore del ciclo può essere utilizzato nelle espressioni contenute in elementi figlio dell'attività ParallelForEach.
Vedere anche
Concetti
ActivityDesigner Sequence
ActivityDesigner Parallel