En parallèle.ForEach avec l'ajout à la liste

Je suis en train d'exécuter plusieurs fonctions qui se connectent à un site distant (par le réseau) et de retourner une liste générique. Mais je tiens à les exécuter simultanément.

Par exemple:

public static List<SearchResult> Search(string title)
{
    //Initialize a new temp list to hold all search results
    List<SearchResult> results = new List<SearchResult>();

    //Loop all providers simultaneously
    Parallel.ForEach(Providers, currentProvider =>
    {
        List<SearchResult> tmpResults = currentProvider.SearchTitle((title));

        //Add results from current provider
        results.AddRange(tmpResults);
    });

    //Return all combined results
    return results;
}

Comme je le vois, à de multiples reprises à des "résultats" peuvent se passer en même temps... ce Qui peut se bloquer ma demande.

Comment puis-je éviter cela?

  • Qui .NET version utilisez-vous?
  • Il faudrait au moins .Net 4; Parallèle y est implantée.
InformationsquelleAutor shaharmor | 2011-11-03