Parallel.ForEach Método

Definição

Executa uma operação foreach (For Each em Visual Basic) na qual as iterações podem correr em paralelo.

Sobrecargas

Name Description
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread e índices de 64 bits num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num Partitioner em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com índices de 64 bits e com dados thread-local num OrderablePartitioner<TSource> onde as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num IEnumerable em que as iterações podem correr em paralelo, e o estado do ciclo pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num IEnumerable em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num Partitioner em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num OrderablePartitioner<TSource> em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo e as opções de loop podem ser configuradas.

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo, e o estado do ciclo pode ser monitorizado e manipulado.

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo e as opções de loop podem ser configuradas.

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) num OrderablePartitioner<TSource> em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo.

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) com índices de 64 bits num IEnumerable em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

ForEach<TSource>(Partitioner<TSource>, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo.

ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo, e o estado do ciclo pode ser monitorizado e manipulado.

ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) num OrderablePartitioner<TSource> em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) com índices de 64 bits num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento é null.

-ou-

O localFinally argumento é null.

A CancellationToken discussão parallelOptions é cancelada.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual, uma ParallelLoopState instância que pode ser usada para sair do ciclo prematuramente, e algum estado local que pode ser partilhado entre iterações que executam no mesmo thread.

O localInit delegado é invocado uma vez para cada tarefa que participa na execução do ciclo e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada tarefa devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por thread para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread e índices de 64 bits num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento é null.

-ou-

O localFinally argumento é null.

A CancellationToken discussão parallelOptions é cancelada.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual, uma ParallelLoopState instância que pode ser usada para sair prematuramente do ciclo, o índice do elemento atual (Int64), e algum estado local que pode ser partilhado entre iterações que executam no mesmo thread.

O localInit delegado é invocado uma vez para cada tarefa que participa na execução do ciclo e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada tarefa devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por thread para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num Partitioner em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
Partitioner<TSource>

O particionador que contém a fonte de dados original.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento é null.

-ou-

O localFinally argumento é null.

A SupportsDynamicPartitions propriedade nos sourcePartitioner devolve false ou o particionador devolve null partições.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

A CancellationToken discussão parallelOptions é cancelada.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Esta sobrecarga é fornecida para cenários com corpos de laço pequenos que possam beneficiar da partição estática de distâncias. Os particionadores devem suportar partições dinâmicas. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

O localInit delegado é invocado uma vez para cada tarefa que participa na execução do ciclo e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada tarefa devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por tarefa para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com índices de 64 bits e com dados thread-local num OrderablePartitioner<TSource> onde as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
OrderablePartitioner<TSource>

O particionador ordenável que contém a fonte de dados original.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento ou localFinally é null.

A SupportsDynamicPartitions propriedade nos sourcePartitioner devolve false ou o particionador devolve null partições.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

A CancellationToken discussão parallelOptions é cancelada.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

O localInit delegado é invocado uma vez para cada tarefa que participa na execução do ciclo e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada thread devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por tarefa para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num IEnumerable em que as iterações podem correr em paralelo, e o estado do ciclo pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento é null.

-ou-

O localFinally argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Exemplos

O exemplo seguinte mostra como usar um ForEach método com estado local:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;

class ForEachWithThreadLocal
{
    // Demonstrated features:
    // 		Parallel.ForEach()
    //		Thread-local state
    // Expected results:
    //      This example sums up the elements of an int[] in parallel.
    //      Each thread maintains a local sum. When a thread is initialized, that local sum is set to 0.
    //      On every iteration the current element is added to the local sum.
    //      When a thread is done, it safely adds its local sum to the global sum.
    //      After the loop is complete, the global sum is printed out.
    // Documentation:
    //		http://msdn.microsoft.com/library/dd990270(VS.100).aspx
    static void Main()
    {
        // The sum of these elements is 40.
        int[] input = { 4, 1, 6, 2, 9, 5, 10, 3 };
        int sum = 0;

        try
        {
            Parallel.ForEach(
                    input,					        // source collection
                    () => 0,					        // thread local initializer
                    (n, loopState, localSum) =>		// body
                    {
                        localSum += n;
                        Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum);
                        return localSum;
                    },
                    (localSum) => Interlocked.Add(ref sum, localSum)					// thread local aggregator
                );

            Console.WriteLine("\nSum={0}", sum);
        }
        // No exception is expected in this example, but if one is still thrown from a task,
        // it will be wrapped in AggregateException and propagated to the main thread.
        catch (AggregateException e)
        {
            Console.WriteLine("Parallel.ForEach has thrown an exception. THIS WAS NOT EXPECTED.\n{0}", e);
        }
    }
}
Imports System.Threading
Imports System.Threading.Tasks

Module ForEachDemo

    ' Demonstrated features:
    '   Parallel.ForEach()
    '   Thread-local state
    ' Expected results:
    '   This example sums up the elements of an int[] in parallel.
    '   Each thread maintains a local sum. When a thread is initialized, that local sum is set to 0.
    '   On every iteration the current element is added to the local sum.
    '   When a thread is done, it safely adds its local sum to the global sum.
    '   After the loop is complete, the global sum is printed out.
    ' Documentation:
    '   http://msdn.microsoft.com/library/dd990270(VS.100).aspx
    Private Sub ForEachDemo()
        ' The sum of these elements is 40.
        Dim input As Integer() = {4, 1, 6, 2, 9, 5, _
        10, 3}
        Dim sum As Integer = 0

        Try
            ' source collection
            Parallel.ForEach(input,
                             Function()
                                 ' thread local initializer
                                 Return 0
                             End Function,
                             Function(n, loopState, localSum)
                                 ' body
                                 localSum += n
                                 Console.WriteLine("Thread={0}, n={1}, localSum={2}", Thread.CurrentThread.ManagedThreadId, n, localSum)
                                 Return localSum
                             End Function,
                             Sub(localSum)
                                 ' thread local aggregator
                                 Interlocked.Add(sum, localSum)
                             End Sub)

            Console.WriteLine(vbLf & "Sum={0}", sum)
        Catch e As AggregateException
            ' No exception is expected in this example, but if one is still thrown from a task,
            ' it will be wrapped in AggregateException and propagated to the main thread.
            Console.WriteLine("Parallel.ForEach has thrown an exception. THIS WAS NOT EXPECTED." & vbLf & "{0}", e)
        End Try
    End Sub


End Module

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual, uma ParallelLoopState instância que pode ser usada para sair do ciclo prematuramente, e algum estado local que pode ser partilhado entre iterações que executam no mesmo thread.

O localInit delegado é invocado uma vez para cada tarefa que participa na execução do ciclo e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada tarefa devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por thread para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num IEnumerable em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Generic.IEnumerable<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : seq<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As IEnumerable(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento é null.

-ou-

O localFinally argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual, uma ParallelLoopState instância que pode ser usada para sair prematuramente do ciclo, o índice do elemento atual (Int64), e algum estado local que pode ser partilhado entre iterações que executam no mesmo thread.

O localInit delegado é invocado uma vez para cada tarefa que participa na execução do ciclo e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada tarefa devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por tarefa para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num Partitioner em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.Partitioner<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As Partitioner(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
Partitioner<TSource>

O particionador que contém a fonte de dados original.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento é null.

-ou-

O localFinally argumento é null.

A SupportsDynamicPartitions propriedade nos sourcePartitioner devolve false ou o particionador devolve null partições.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

O localInit delegado é invocado uma vez para cada thread que participa na execução do loop e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada tarefa devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por tarefa para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)

Executa uma operação foreach (For Each em Visual Basic) com dados locais de thread num OrderablePartitioner<TSource> em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource, typename TLocal>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, Func<TLocal> ^ localInit, Func<TSource, System::Threading::Tasks::ParallelLoopState ^, long, TLocal, TLocal> ^ body, Action<TLocal> ^ localFinally);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource,TLocal>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, Func<TLocal> localInit, Func<TSource,System.Threading.Tasks.ParallelLoopState,long,TLocal,TLocal> body, Action<TLocal> localFinally);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * Func<'Local> * Func<'Source, System.Threading.Tasks.ParallelLoopState, int64, 'Local, 'Local> * Action<'Local> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource, TLocal) (source As OrderablePartitioner(Of TSource), localInit As Func(Of TLocal), body As Func(Of TSource, ParallelLoopState, Long, TLocal, TLocal), localFinally As Action(Of TLocal)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

TLocal

O tipo dos dados locais de thread.

Parâmetros

source
OrderablePartitioner<TSource>

O particionador ordenável que contém a fonte de dados original.

localInit
Func<TLocal>

O delegado de função que devolve o estado inicial dos dados locais para cada tarefa.

body
Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>

O delegado que é invocado uma vez por iteração.

localFinally
Action<TLocal>

O delegado que realiza uma ação final sobre o estado local de cada tarefa.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

-ou-

O localInit argumento é null.

-ou-

O localFinally argumento é null.

A SupportsDynamicPartitions propriedade nos sourcePartitioner devolve false ou o particionador devolve null partições.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

O localInit delegado é invocado uma vez para cada tarefa que participa na execução do ciclo e devolve o estado local inicial para cada uma dessas tarefas. Estes estados iniciais são passados para as primeiras body invocações de cada tarefa. Depois, cada invocação subsequente do corpo devolve um valor de estado possivelmente modificado que é passado para a invocação do corpo seguinte. Finalmente, a última invocação do corpo em cada tarefa devolve um valor de estado que é passado ao localFinally delegado. O localFinally delegado é invocado uma vez por tarefa para realizar uma ação final no estado local de cada tarefa. Este delegado pode ser invocado simultaneamente em múltiplas tarefas; Por isso, deve sincronizar o acesso a quaisquer variáveis partilhadas.

O Parallel.ForEach método pode usar mais tarefas do que threads ao longo da sua vida útil, à medida que as tarefas existentes são concluídas e substituídas por novas tarefas. Isto dá ao objeto subjacente TaskScheduler a oportunidade de adicionar, alterar ou remover threads que servem o ciclo.

Ver também

Aplica-se a

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo e as opções de loop podem ser configuradas.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

body
Action<TSource>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O CancellationToken argumento parallelOptions é cancelado

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. Tem o elemento de corrente como parâmetro.

Ver também

Aplica-se a

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

body
Action<TSource,ParallelLoopState>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O CancellationToken argumento parallelOptions é cancelado

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual e uma ParallelLoopState instância que pode ser usada para sair prematuramente do ciclo.

Ver também

Aplica-se a

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo, e o estado do ciclo pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : seq<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

body
Action<TSource,ParallelLoopState>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual e uma ParallelLoopState instância que pode ser usada para sair prematuramente do ciclo.

Ver também

Aplica-se a

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo e as opções de loop podem ser configuradas.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

Parâmetros

source
Partitioner<TSource>

O particionador que contém a fonte de dados original.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

body
Action<TSource>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

A CancellationToken discussão parallelOptions é cancelada.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

A SupportsDynamicPartitions propriedade no source particionador devolve false.

-ou-

A exceção que é lançada quando quaisquer métodos no source particionador retornam null.

A exceção que é lançada para conter uma exceção lançada de um dos delegados especificados.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O Parallel.ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

Ver também

Aplica-se a

ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

Parâmetros

source
Partitioner<TSource>

O particionador que contém a fonte de dados original.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

body
Action<TSource,ParallelLoopState>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

A CancellationToken discussão parallelOptions é cancelada.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

A SupportsDynamicPartitions propriedade no source particionador devolve false.

-ou-

A exceção que é lançada quando quaisquer métodos no source particionador retornam null.

A exceção que é lançada para conter uma exceção lançada de um dos delegados especificados.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O Parallel.ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

Ver também

Aplica-se a

ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) num OrderablePartitioner<TSource> em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As OrderablePartitioner(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

Parâmetros

source
OrderablePartitioner<TSource>

O particionador ordenável que contém a fonte de dados original.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

body
Action<TSource,ParallelLoopState,Int64>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O CancellationToken argumento parallelOptions é cancelado

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

A SupportsDynamicPartitions propriedade no source particionador ordenável devolve false.

-ou-

A KeysNormalized propriedade no source particionador ordenável devolve false.

-ou-

A exceção que é lançada quando quaisquer métodos no source particionador ordenável retornam null.

A exceção que é lançada para conter uma exceção lançada de um dos delegados especificados.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O Parallel.ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

Ver também

Aplica-se a

ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num IEnumerable em que as iterações podem correr em paralelo.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, Action<TSource> body);
static member ForEach : seq<'Source> * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

body
Action<TSource>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Exemplos

O exemplo seguinte utiliza o ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) método para contar o número de vogais e caracteres que não são espaços em branco num ficheiro de texto. Neste caso, o ParallelLoopResult valor devolvido pelo método é ignorado. Note que, como as operações podem correr em paralelo, deve garantir que o incremento das variáveis contadoras é uma operação atómica, e que múltiplos threads não tentam aceder às variáveis contadoras simultaneamente. Para este efeito, o exemplo utiliza a afirmação lock (em C#) e a afirmação SyncLock (em Visual Basic).

using System;
using System.IO;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      Task<String> task = ReadCharacters(@".\CallOfTheWild.txt");
      String text = task.Result;
      
      int nVowels = 0;
      int nNonWhiteSpace = 0;
      Object obj = new Object();

      ParallelLoopResult result = Parallel.ForEach(text, 
                                                   (ch) => {
                                                      Char uCh = Char.ToUpper(ch);
                                                      if ("AEIOUY".IndexOf(uCh) >= 0) {
                                                         lock (obj) {
                                                            nVowels++;
                                                         }
                                                      }
                                                      if (!Char.IsWhiteSpace(uCh)) {
                                                         lock (obj) {
                                                            nNonWhiteSpace++;
                                                         }   
                                                      }
                                                   } );
      Console.WriteLine("Total characters:      {0,10:N0}", text.Length);
      Console.WriteLine("Total vowels:          {0,10:N0}", nVowels);
      Console.WriteLine("Total non-white-space:  {0,10:N0}", nNonWhiteSpace);
   }

   private static async Task<String> ReadCharacters(String fn)
   {
      String text;
      using (StreamReader sr = new StreamReader(fn)) {
         text = await sr.ReadToEndAsync();
      }
      return text;
   }
}
// The example displays output like the following:
//       Total characters:         198,548
//       Total vowels:              58,421
//       Total non-white-space:     159,461
Imports System.IO
Imports System.Threading.Tasks

Module Example
   Public Sub Main()
      Dim task As Task(Of String) = ReadCharacters(".\CallOfTheWild.txt")
      Dim text As String = task.Result
      
      Dim nVowels As Integer = 0
      Dim nNonWhiteSpace As Integer = 0
      Dim obj As New Object()

      Dim result As ParallelLoopResult = Parallel.ForEach(text, 
                                                          Sub(ch)
                                                             Dim uCh As Char = Char.ToUpper(ch)
                                                             If "AEIOUY".IndexOf(uCh) >= 0 Then
                                                                SyncLock obj
                                                                   nVowels += 1
                                                                End SyncLock
                                                             End If
                                                             If Not Char.IsWhiteSpace(uCh) Then
                                                                SyncLock obj
                                                                   nNonWhiteSpace += 1
                                                                End SyncLock   
                                                             End If
                                                          End Sub)
      Console.WriteLine("Total characters:      {0,10:N0}", text.Length)
      Console.WriteLine("Total vowels:          {0,10:N0}", nVowels)
      Console.WriteLine("Total non-white space:  {0,10:N0}", nNonWhiteSpace)
   End Sub
   
   Private Async Function ReadCharacters(fn As String) As Task(Of String)
      Dim text As String
      Using sr As New StreamReader(fn)
         text = Await sr.ReadToEndAsync()
      End Using
      Return text
   End Function
End Module
' The output from the example resembles the following:
'       Total characters:         198,548
'       Total vowels:              58,421
'       Total non-white space:     159,461

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. Tem o elemento de corrente como parâmetro.

Ver também

Aplica-se a

ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) com índices de 64 bits num IEnumerable em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : seq<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

body
Action<TSource,ParallelLoopState,Int64>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual, uma ParallelLoopState instância que pode ser usada para sair prematuramente do laço, e o índice do elemento atual (Int64).

Ver também

Aplica-se a

ForEach<TSource>(Partitioner<TSource>, Action<TSource>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Action<TSource> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, Action<TSource> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Action<'Source> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), body As Action(Of TSource)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

Parâmetros

source
Partitioner<TSource>

O particionador que contém a fonte de dados original.

body
Action<TSource>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

A SupportsDynamicPartitions propriedade no source particionador devolve false.

-ou-

A exceção que é lançada quando quaisquer métodos no source particionador retornam null.

-ou-

O GetPartitions(Int32) método no source particionador não devolve o número correto de partições.

A exceção que é lançada para conter uma exceção lançada de um dos delegados especificados.

Exemplos

O exemplo seguinte mostra como implementar um particionador de intervalos para uso com:Parallel.ForEach

using System;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Threading;
using System.Threading.Tasks;

class RangePartitionerDemo 
{
        static void Main()
        {
            Stopwatch sw = null;

            long sum = 0;
            long SUMTOP = 10000000;

            // Try sequential for
            sw = Stopwatch.StartNew();
            for (long i = 0; i < SUMTOP; i++) sum += i;
            sw.Stop();
            Console.WriteLine("sequential for result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);

            // Try parallel for -- this is slow!
            //sum = 0;
            //sw = Stopwatch.StartNew();
            //Parallel.For(0L, SUMTOP, (item) => Interlocked.Add(ref sum, item));
            //sw.Stop();
            //Console.WriteLine("parallel for  result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);

            // Try parallel for with locals
            sum = 0;
            sw = Stopwatch.StartNew();
            Parallel.For(0L, SUMTOP, () => 0L, (item, state, prevLocal) => prevLocal + item, local => Interlocked.Add(ref sum, local));
            sw.Stop();
            Console.WriteLine("parallel for w/locals result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);

            // Try range partitioner
            sum = 0;
            sw = Stopwatch.StartNew();
            Parallel.ForEach(Partitioner.Create(0L, SUMTOP), (range) =>
            {
                long local = 0;
                for (long i = range.Item1; i < range.Item2; i++) local += i;
                Interlocked.Add(ref sum, local);
            });
            sw.Stop();
            Console.WriteLine("range partitioner result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds);
        }
}
Imports System.Collections.Concurrent
Imports System.Threading
Imports System.Threading.Tasks

Module RangePartitionerDemo

    Sub Main()
        Dim sw As Stopwatch = Nothing

        Dim sum As Long = 0
        Dim SUMTOP As Long = 10000000

        ' Try sequential for
        sw = Stopwatch.StartNew()
        For i As Long = 0 To SUMTOP - 1
            sum += i
        Next
        sw.Stop()
        Console.WriteLine("sequential for result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)

        ' Try parallel for with locals
        sum = 0
        sw = Stopwatch.StartNew()
        Parallel.For(0L, SUMTOP, Function() 0L, Function(item, state, prevLocal) prevLocal + item, Function(local) Interlocked.Add(sum, local))
        sw.Stop()
        Console.WriteLine("parallel for w/locals result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)

        ' Try range partitioner
        sum = 0
        sw = Stopwatch.StartNew()
        Parallel.ForEach(Partitioner.Create(0L, SUMTOP),
                         Sub(range)
                             Dim local As Long = 0
                             For i As Long = range.Item1 To range.Item2 - 1
                                 local += i
                             Next
                             Interlocked.Add(sum, local)
                         End Sub)
        sw.Stop()
        Console.WriteLine("range partitioner result = {0}, time = {1} ms", sum, sw.ElapsedMilliseconds)
    End Sub

End Module

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O Parallel.ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

Ver também

Aplica-se a

ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)

Executa uma operação foreach (For Each em Visual Basic) num Partitioner em que as iterações podem correr em paralelo, e o estado do ciclo pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::Partitioner<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.Partitioner<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState> body);
static member ForEach : System.Collections.Concurrent.Partitioner<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As Partitioner(Of TSource), body As Action(Of TSource, ParallelLoopState)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

Parâmetros

source
Partitioner<TSource>

O particionador que contém a fonte de dados original.

body
Action<TSource,ParallelLoopState>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

A SupportsDynamicPartitions propriedade no source particionador devolve false.

-ou-

Um método no source particionador devolve null.

-ou-

O GetPartitions(Int32) método no source particionador não devolve o número correto de partições.

A exceção que é lançada para conter uma exceção lançada de um dos delegados especificados.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O Parallel.ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

Ver também

Aplica-se a

ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) num OrderablePartitioner<TSource> em que as iterações podem correr em paralelo e o estado do ciclo pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Concurrent::OrderablePartitioner<TSource> ^ source, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Concurrent.OrderablePartitioner<TSource> source, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : System.Collections.Concurrent.OrderablePartitioner<'Source> * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As OrderablePartitioner(Of TSource), body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo dos elementos em source.

Parâmetros

source
OrderablePartitioner<TSource>

O particionador ordenável que contém a fonte de dados original.

body
Action<TSource,ParallelLoopState,Int64>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O source argumento é null.

-ou-

O body argumento é null.

A SupportsDynamicPartitions propriedade no source particionador ordenável devolve false.

-ou-

A KeysNormalized propriedade no particionador ordenável de origem devolve false.

-ou-

Quaisquer métodos no particionador ordenável de origem retornam null.

A exceção lançada por um dos delegados especificados.

Observações

Esta sobrecarga é fornecida para cenários em que se pretende sobrepor o esquema de particionamento padrão. Por exemplo, pequenos corpos em laço podem beneficiar de particionar o intervalo. O Parallel.ForEach método espera que particionadores personalizados suportem particionamento dinâmico. Para mais informações, consulte Particionadores Personalizados para PLINQ e TPL e Como: Implementar Partições Dinâmicas.

Ver também

Aplica-se a

ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)

Executa uma operação foreach (For Each em Visual Basic) com índices de 64 bits num IEnumerable em que as iterações podem correr em paralelo, opções de loop podem ser configuradas e o estado do loop pode ser monitorizado e manipulado.

public:
generic <typename TSource>
 static System::Threading::Tasks::ParallelLoopResult ForEach(System::Collections::Generic::IEnumerable<TSource> ^ source, System::Threading::Tasks::ParallelOptions ^ parallelOptions, Action<TSource, System::Threading::Tasks::ParallelLoopState ^, long> ^ body);
public static System.Threading.Tasks.ParallelLoopResult ForEach<TSource>(System.Collections.Generic.IEnumerable<TSource> source, System.Threading.Tasks.ParallelOptions parallelOptions, Action<TSource,System.Threading.Tasks.ParallelLoopState,long> body);
static member ForEach : seq<'Source> * System.Threading.Tasks.ParallelOptions * Action<'Source, System.Threading.Tasks.ParallelLoopState, int64> -> System.Threading.Tasks.ParallelLoopResult
Public Shared Function ForEach(Of TSource) (source As IEnumerable(Of TSource), parallelOptions As ParallelOptions, body As Action(Of TSource, ParallelLoopState, Long)) As ParallelLoopResult

Parâmetros de Tipo Genérico

TSource

O tipo de dados na fonte.

Parâmetros

source
IEnumerable<TSource>

Uma fonte de dados enumerável.

parallelOptions
ParallelOptions

Um objeto que configura o comportamento desta operação.

body
Action<TSource,ParallelLoopState,Int64>

O delegado que é invocado uma vez por iteração.

Devoluções

Uma estrutura que contém informação sobre qual parte do ciclo foi concluída.

Exceções

O CancellationToken argumento parallelOptions é cancelado

O source argumento é null.

-ou-

O parallelOptions argumento é null.

-ou-

O body argumento é null.

A exceção que contém todas as exceções individuais lançadas em todos os threads.

O CancellationTokenSource associado com o CancellationToken no parallelOptions foi eliminado.

Observações

O body delegado é invocado uma vez para cada elemento no source enumerável. É fornecido com os seguintes parâmetros: o elemento atual, uma ParallelLoopState instância que pode ser usada para sair prematuramente do laço, e o índice do elemento atual (Int64).

Ver também

Aplica-se a