Odpowiedzi:
Nie musisz robić nic specjalnego, Parallel.Foreach()
poczekasz, aż wszystkie rozgałęzione zadania zostaną ukończone. Z wątku wywołującego można traktować ją jako pojedynczą instrukcję synchroniczną i na przykład zawinąć ją w try / catch.
Nie potrzebujesz tego z Parallel.Foreach: wykonuje foreach tylko w tylu wątkach, ile jest dostępnych procesorów, ale zwraca synchronicznie.
Więcej informacji można znaleźć tutaj