Imbriquée Parallèle.Les Boucles ForEach sur la même liste?

J'ai besoin de paralléliser une méthode qui ne exhaustive comparaison par paires sur des éléments dans une liste. Le numéro de série de la mise en œuvre est simple:

foreach (var element1 in list)
    foreach (var element2 in list)
        foo(element1, element2);

Dans ce cas, toto ne pas modifier l'état de element1 ou element2. Je sais qu'il n'est pas sûr pour le faire simplement imbriquée Parallèle.ForEach états:

Parallel.ForEach(list, delegate(A element1)
{
    Parallel.ForEach(list, delegate(A element2)
    {
        foo(element1, element2);
    });
});

Quel serait le moyen idéal pour mettre en œuvre cette aide de l'parallèle des tâches de la bibliothèque?