ParallelForEach, projektant działań

Działanie ParallelForEach<T> wylicza elementy kolekcji i wykonuje instrukcję osadzoną dla każdego elementu kolekcji równolegle, co jest asynchroniczne w tym samym wątku. Użyj tego działania sterowania przepływem zamiast Sequence działania, jeśli działania podrzędne tego działania powinny być w stanie bezczynności.

Działanie ParallelForEach<T> ma właściwość zawierającą CompletionCondition określone przez użytkownika wyrażenie Języka Visual Basic. Działanie ParallelForEach<T> ocenia tę właściwość po zakończeniu każdej gałęzi. Jeśli zostanie obliczona wartość true, ParallelForEach<T> działanie zostanie ukończone bez wykonywania innych gałęzi. CompletionCondition Jeśli wartość nie ma wartości true, ParallelForEach<T> działanie zostanie ukończone po zakończeniu wszystkich działań podrzędnych.

Działanie ParallelForeach<T>

ParallelForEach<T> Wylicza wartości i planuje Body wartość dla każdej wartości, na podstawie których jest wyliczana. Planuje tylko element Body. Sposób wykonywania treści zależy od tego, czy Body działanie jest bezczynne.

Jeśli element Body nie działa bezczynnie, jest wykonywany w odwrotnej kolejności, ponieważ zaplanowane działania są obsługiwane jako stos, ostatnie zaplanowane działanie jest wykonywane najpierw. Jeśli na przykład masz kolekcję {1,2,3,4}elementu i ParallelForEach<T> użyjesz funkcji WriteLine jako treści, aby zapisać wartość na wyjętą. Masz 4, 3, 2, 1 wydrukowane w konsoli programu . Dzieje się tak, ponieważ funkcja WriteLine nie działa bezczynnie, dlatego po zaplanowaniu działania funkcji WriteLine 4 zostały wykonane przy użyciu zachowania stosu (najpierw w ostatnim miejscu).

Jeśli jednak masz działania, Body które mogą iść bezczynne, takie jak Receive działanie lub Delay działanie. Następnie nie trzeba czekać na ich ukończenie. ParallelForEach<T> przechodzi do następnego zaplanowanego działania treści i spróbuj go wykonać. Jeśli to działanie również przejdzie w stan bezczynności, ParallelForEach<T> ponownie przejdzie na następne działanie ciała.

Korzystanie z działania ParallelForEach<T> Projektant

Uzyskaj dostęp do projektanta działań ParallelForEach<T> w kategorii Przepływ sterowania przybornika.

Projektant działań ParallelForEach<T> można przeciągać z przybornika i upuszczać na powierzchnię Przepływ pracy Projektant wszędzie tam, gdzie są zwykle umieszczani projektanci działań, na przykład wewnątrz projektanta działań sekwencji. Po usunięciu go do Projektant przepływu pracy tworzy ParallelForEach<T> działanie, które domyślnie zawiera DisplayNameelement ParallelForEach<Int32>.

Właściwości języka T> ParallelForEach<w Projektant przepływu pracy

W poniższej tabeli przedstawiono najbardziej przydatne ParallelForEach<T> właściwości działania i opisano sposób ich użycia w projektancie.

Nazwa właściwości Wymagania Sposób użycia
DisplayName Fałsz Określa przyjazną nazwę wyświetlaną projektanta działań w nagłówku. Wartość domyślna to ParallelForEach<Int32>. Wartość można opcjonalnie edytować w siatce Właściwości lub bezpośrednio w nagłówku projektanta działań.
Body Fałsz Działanie do wykonania dla każdego elementu w kolekcji. Aby dodać Body działanie, upuść działanie z przybornika do pola Treść w projektancie działań ParallelForEach<T> z tekstem wskazówek "Upuść działanie tutaj".
TypeArgument Prawda Typ elementów w Values kolekcji określony przez ogólny parametr T. Domyślnie właściwość TypeArgument jest ustawiona na Int32. Aby zmienić typ T w projektancie działań ParallelForEach<T> , zmień wartość pola kombi TypeArgument w siatce właściwości.
Values Prawda Kolekcja elementów do iterowania. Aby ustawić Values, wpisz wyrażenie Języka Visual Basic w polu Wartości w projektancie działań ForEach<T> w polu z tekstem wskazówek "Wprowadź wyrażenie VB" lub w polu Wartości w oknie Właściwości.
CompletionCondition Ocena po zakończeniu każdej iteracji. Jeśli zostanie obliczona wartość true, zaplanowane iteracji oczekujące zostaną anulowane. Jeśli ta właściwość nie jest ustawiona, wszystkie zaplanowane instrukcje są wykonywane do momentu ukończenia.

Domyślnie iterator pętli ma nazwę item. Nazwę zmiennej iteratora można zmienić w polu ForEach w projektancie działań ParallelForEach<T>. Iterator pętli może być używany w wyrażeniach w elementach podrzędnych ParallelForEach<T> działania.

Zobacz też