Parallel.Invoke e Parallel.ForEach essencialmente a mesma coisa?

E por "mesma coisa", quero dizer, essas duas operações basicamente fazem o mesmo trabalho, e isso se resume a qual delas é mais conveniente chamar com base no que você tem que trabalhar? (ou seja, uma lista de delegados ou uma lista de coisas para iterar)? Eu tenho pesquisado MSDN, StackOverflow e vários artigos aleatórios, mas ainda não encontrei uma resposta clara para isso.

EDITAR: Eu deveria ter sido mais claro; Eu estou perguntando se os dois métodos fazem a mesma coisa, porque se não, eu gostaria de entender o que seria mais eficiente.

Exemplo: eu tenho uma lista de 500 valores-chave. Atualmente eu uso um loop foreach que percorre a lista (em série) e executa o trabalho para cada item. Se eu quiser aproveitar vários núcleos, devo simplesmente usar o Parallel.ForEach? digamos, por razões de argumentação, que eu tivesse uma matriz de 500 delegados para aquelas 500 tarefas - o efeito líquido seria diferente chamando Parallel.Invoke e dando a ele uma lista de 500 delegados?

Muito obrigado antecipadamente!

questionAnswers(3)

yourAnswerToTheQuestion