Как лучше использовать библиотеку параллельных задач

Я только начал использовать TPL и хочу, чтобы несколько вызовов веб-сервисов выполнялись параллельно. Из того, что я могу собрать, я вижу два способа сделать это.

ЛибоParallel.ForEach:

List<ServiceMemberBase> list = new List<ServiceMemberBase>(); //Take list from somewhere.
        Parallel.ForEach(list, member =>
            {
                var result = Proxy.Invoke(member);
                //...
                //Do stuff with the result
                //...
            });

ИлиTask<T>:

List<ServiceMemberBase> list = new List<ServiceMemberBase>(); //Take list from somewhere.
        ForEach(var member in list)
        {
            Task<MemberResult>.Factory.StartNew(() => proxy.Invoke(member));
        }

        //Wait for all tasks to finish.
        //Process the result objects.

Независимо от того, правильный синтаксис или нет, они эквивалентны?

Дадут ли они тот же результат? Если нет, то почему? и что предпочтительнее?

7
задан svick 9 July 2012 в 06:24
поделиться