I have seen Parallel.ForEach blocks the calling thread until the specified actions complete. However, it does not automatically await async method callsused inappropriately, similar to how normally callingand I figured an async method without awaiting itexample in this question would continue without waiting for the async method to completehelp.
An example ofWhen you run the code below in a Console app, you will see how the tasks executed in Parallel.ForEach not automatically awaiting an async method call:doesn't block the calling thread. This could be okay if you don't care about the result (positive or negative) but if you do need the result, you should make sure to use Task.WhenAll.
Using the Parallel.ForEach doeswith a Task will not automatically await async actionsblock the calling thread. If you need to wait for async actions to completecare about the result, make sure to await themthe tasks.