Parallel.ForEach с добавлением в список

Я пытаюсь запустить несколько функций, которые подключаются к удаленному сайту (по сети) и возвращают общий список. Но я хочу запускать их одновременно.

Например:

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;
}

Насколько я понимаю, несколько вставок в «результаты» могут происходить одновременно ... Что может привести к сбою моего приложения.

Как этого избежать?

69
задан pinckerman 3 December 2013 в 16:52
поделиться