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!