C # - ¿Son Parallel.Invoke y Parallel.ForEach esencialmente lo mismo?

Y con "lo mismo" quiero decir, ¿estas dos operaciones hacen básicamente el mismo trabajo, y simplemente se reduce a cuál es más conveniente llamar en función de lo que tiene que trabajar? (es decir, una lista de delegados o una lista de cosas para iterar)? He estado buscando en MSDN, StackOverflow y varios artículos aleatorios, pero todavía tengo que encontrar una respuesta clara para esto.

EDITAR: Debería haber sido más claro; Estoy preguntando si los dos métodos hacen lo mismo porque si no lo hacen, me gustaría entender cuál sería más eficiente.

Ejemplo: Tengo una lista de 500 valores clave. Actualmente utilizo un bucle foreach que recorre la lista (en serie) y realiza trabajos para cada elemento. Si quiero aprovechar los múltiples núcleos, ¿debería simplemente usar Parallel.ForEach? Digamos, por el bien de los argumentos, que tenía un conjunto de 500 delegados para esas 500 tareas. ¿Sería el efecto neto un llamamiento diferente a Parallel.Invoke y dándole una lista de 500 delegados?

¡Muchas gracias de antemano!

Respuestas a la pregunta(3)

Su respuesta a la pregunta