Parallel.ForEach 메서드
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
반복이 병렬로 실행될 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 실행합니다.
오버로드
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
스레드 로컬 데이터를 사용하여 반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
parallelOptions
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
인수가 null
인 경우
또는
localFinally
인수가 null
인 경우
parallelOptions
인수의 CancellationToken이 취소된 경우
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소, ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance 및 동일한 스레드에서 실행되는 반복 간에 공유될 수 있는 일부 로컬 상태 매개 변수와 함께 제공됩니다.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 태스크에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 작업의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 스레드당 한 번 호출되어 각 작업의 로컬 상태에 대한 최종 작업을 수행합니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
64비트 인덱스와 스레드 로컬 데이터를 사용하여 반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
parallelOptions
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
인수가 null
인 경우
또는
localFinally
인수가 null
인 경우
parallelOptions
인수의 CancellationToken이 취소된 경우
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소, ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance, 현재 요소의 인덱스(Int64) 및 동일한 스레드에서 실행되는 반복 간에 공유될 수 있는 일부 로컬 상태 매개 변수와 함께 제공됩니다.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 태스크에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 작업의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 스레드당 한 번 호출되어 각 작업의 로컬 상태에 대한 최종 작업을 수행합니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
스레드 로컬 데이터를 사용하여 반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 Partitioner에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
- source
- Partitioner<TSource>
원래 데이터 소스가 포함된 Partitioner입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
parallelOptions
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
인수가 null
인 경우
또는
localFinally
인수가 null
인 경우
source
SupportsDynamicPartitions의 Partitioner 속성은 false
를 반환하거나 파티셔너가 null
파티션을 반환합니다.
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
parallelOptions
인수의 CancellationToken이 취소된 경우
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 이 오버로드는 정적 범위 분할의 이점을 얻을 수 있는 작은 루프 본문이 있는 시나리오에 대해 제공됩니다. 파티셔너가 동적 파티션을 지원해야 합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 태스크에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 작업의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 각 태스크의 로컬 상태에 대한 최종 작업을 수행하기 위해 태스크당 한 번 호출됩니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복이 foreach
병렬로 실행될 수 있는 에서 64비트 인덱스와 스레드 로컬 데이터를 OrderablePartitioner<TSource> 사용하여 (For Each
Visual Basic의 경우) 작업을 실행하고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링하고 조작할 수 있습니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
원래 데이터 소스가 포함된 정렬할 수 있는 파티셔너입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
parallelOptions
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
또는 localFinally
인수가 null
인 경우
source
SupportsDynamicPartitions의 Partitioner 속성은 false
를 반환하거나 파티셔너가 null
파티션을 반환합니다.
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
parallelOptions
인수의 CancellationToken이 취소된 경우
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 태스크에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 스레드의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 각 태스크의 로컬 상태에 대한 최종 작업을 수행하기 위해 태스크당 한 번 호출됩니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
스레드 로컬 데이터를 사용하여 반복을 병렬로 실행할 수 있고 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
인수가 null
인 경우
또는
localFinally
인수가 null
인 경우
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
예제
다음 예제에서는 로컬 상태의 메서드를 ForEach 사용하는 방법을 보여줍니다.
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
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소, ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance 및 동일한 스레드에서 실행되는 반복 간에 공유될 수 있는 일부 로컬 상태 매개 변수와 함께 제공됩니다.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 태스크에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 작업의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 스레드당 한 번 호출되어 각 작업의 로컬 상태에 대한 최종 작업을 수행합니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
스레드 로컬 데이터를 사용하여 반복을 병렬로 실행할 수 있고 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
인수가 null
인 경우
또는
localFinally
인수가 null
인 경우
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소, ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance, 현재 요소의 인덱스(Int64) 및 동일한 스레드에서 실행되는 반복 간에 공유될 수 있는 일부 로컬 상태 매개 변수와 함께 제공됩니다.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 태스크에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 작업의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 각 태스크의 로컬 상태에 대한 최종 작업을 수행하기 위해 태스크당 한 번 호출됩니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
스레드 로컬 데이터를 사용하여 반복을 병렬로 실행할 수 있고 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 Partitioner에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
- source
- Partitioner<TSource>
원래 데이터 소스가 포함된 Partitioner입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
인수가 null
인 경우
또는
localFinally
인수가 null
인 경우
source
SupportsDynamicPartitions의 Partitioner 속성은 false
를 반환하거나 파티셔너가 null
파티션을 반환합니다.
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 스레드에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 작업의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 각 태스크의 로컬 상태에 대한 최종 작업을 수행하기 위해 태스크당 한 번 호출됩니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
스레드 로컬 데이터를 사용하여 반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 OrderablePartitioner<TSource>에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
- TLocal
스레드 로컬 데이터의 형식입니다.
매개 변수
원래 데이터 소스가 포함된 정렬할 수 있는 파티셔너입니다.
- localInit
- Func<TLocal>
각 작업에 대한 로컬 데이터의 초기 상태를 반환하는 함수 대리자입니다.
- body
- Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>
반복당 한 번씩 호출되는 대리자입니다.
- localFinally
- Action<TLocal>
각 작업의 로컬 상태에 대해 최종 동작을 수행하는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
인수가 null
인 경우
또는
body
인수가 null
인 경우
또는
localInit
인수가 null
인 경우
또는
localFinally
인수가 null
인 경우
source
SupportsDynamicPartitions의 Partitioner 속성은 false
를 반환하거나 파티셔너가 null
파티션을 반환합니다.
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
localInit
대리자는 루프 실행에 참여하고 각 태스크에 대한 초기 로컬 상태를 반환하는 각 태스크에 대해 한 번 호출됩니다. 이러한 초기 상태는 각 작업의 첫 번째 body
호출에 전달됩니다. 그런 다음 모든 후속 본문 호출은 다음 본문 호출에 전달되는 수정된 상태 값을 반환합니다. 마지막으로 각 작업의 마지막 본문 호출은 대리자에게 localFinally
전달되는 상태 값을 반환합니다.
localFinally
대리자는 각 태스크의 로컬 상태에 대한 최종 작업을 수행하기 위해 태스크당 한 번 호출됩니다. 이 대리자는 여러 작업에서 동시에 호출될 수 있습니다. 따라서 공유 변수에 대한 액세스를 동기화해야 합니다.
메서드는 Parallel.ForEach 기존 작업이 완료되고 새 작업으로 대체되기 때문에 실행 수명 동안 스레드보다 더 많은 작업을 사용할 수 있습니다. 이렇게 하면 기본 개체가 루프를 서비스하는 TaskScheduler 스레드를 추가, 변경 또는 제거할 수 있습니다.
추가 정보
적용 대상
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- body
- Action<TSource>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
parallelOptions
인수의 CancellationToken이 취소된 경우
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소와 함께 매개 변수로 제공됩니다.
추가 정보
적용 대상
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- body
- Action<TSource,ParallelLoopState>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
parallelOptions
인수의 CancellationToken이 취소된 경우
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소 및 ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance 매개 변수와 함께 제공됩니다.
추가 정보
적용 대상
ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 OrderablePartitioner<TSource>에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
매개 변수
원래 데이터 소스가 포함된 정렬할 수 있는 파티셔너입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- body
- Action<TSource,ParallelLoopState,Int64>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
parallelOptions
인수의 CancellationToken이 취소된 경우
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
source
에서 정렬할 수 있는 파티셔너의 SupportsDynamicPartitions 속성은 false
를 반환합니다.
또는
source
에서 정렬할 수 있는 파티셔너의 KeysNormalized 속성은 false
를 반환합니다.
또는
source
정렬할 수 있는 파티셔너에 있는 모든 메서드가 null
을 반환할 때 throw되는 예외입니다.
지정된 대리자 중 하나에서 throw된 예외가 포함되도록 throw되는 예외입니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 Parallel.ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
추가 정보
적용 대상
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 Partitioner에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
매개 변수
- source
- Partitioner<TSource>
원래 데이터 소스가 포함된 Partitioner입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- body
- Action<TSource>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
parallelOptions
인수의 CancellationToken이 취소된 경우
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
source
Partitioner의 SupportsDynamicPartitions 속성은 false
를 반환합니다.
또는
source
파티셔너에 있는 모든 메서드가 null
을 반환할 때 throw되는 예외입니다.
지정된 대리자 중 하나에서 throw된 예외가 포함되도록 throw되는 예외입니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 Parallel.ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
추가 정보
적용 대상
ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
64비트 인덱스를 사용하여 반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- body
- Action<TSource,ParallelLoopState,Int64>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
parallelOptions
인수의 CancellationToken이 취소된 경우
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소, ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance 및 현재 요소의 인덱스(Int64)와 같은 매개 변수가 제공됩니다.
추가 정보
적용 대상
ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 Partitioner에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
매개 변수
- source
- Partitioner<TSource>
원래 데이터 소스가 포함된 Partitioner입니다.
- body
- Action<TSource,ParallelLoopState>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
Partitioner의 SupportsDynamicPartitions 속성은 false
를 반환합니다.
또는
source
Partitioner의 메서드는 null
를 반환합니다.
또는
source
Partitioner의 GetPartitions(Int32) 메서드가 올바른 파티션 수를 반환하지 않습니다.
지정된 대리자 중 하나에서 throw된 예외가 포함되도록 throw되는 예외입니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 Parallel.ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
추가 정보
적용 대상
ForEach<TSource>(Partitioner<TSource>, Action<TSource>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복이 병렬로 실행될 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 Partitioner 작업을 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
매개 변수
- source
- Partitioner<TSource>
원래 데이터 소스가 포함된 Partitioner입니다.
- body
- Action<TSource>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
Partitioner의 SupportsDynamicPartitions 속성은 false
를 반환합니다.
또는
source
파티셔너에 있는 모든 메서드가 null
을 반환할 때 throw되는 예외입니다.
또는
source
Partitioner의 GetPartitions(Int32) 메서드가 올바른 파티션 수를 반환하지 않습니다.
지정된 대리자 중 하나에서 throw된 예외가 포함되도록 throw되는 예외입니다.
예제
다음 예제에서는 와 함께 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
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 Parallel.ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
추가 정보
적용 대상
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
64비트 인덱스를 사용하여 반복을 병렬로 실행할 수 있고 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- body
- Action<TSource,ParallelLoopState,Int64>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소, ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance 및 현재 요소의 인덱스(Int64)와 같은 매개 변수가 제공됩니다.
추가 정보
적용 대상
ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 OrderablePartitioner<TSource>에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
매개 변수
원래 데이터 소스가 포함된 정렬할 수 있는 파티셔너입니다.
- body
- Action<TSource,ParallelLoopState,Int64>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
source
에서 정렬할 수 있는 파티셔너의 SupportsDynamicPartitions 속성은 false
를 반환합니다.
또는
소스에서 정렬할 수 있는 파티셔너의 KeysNormalized 속성은 false
를 반환합니다.
또는
소스 정렬 가능 파티셔너의 모든 메서드는 null
을 반환합니다.
지정된 대리자 중 하나에서 throw된 예외입니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 Parallel.ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
추가 정보
적용 대상
ForEach<TSource>(IEnumerable<TSource>, Action<TSource>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복이 병렬로 실행될 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable 작업을 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- body
- Action<TSource>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
예제
다음 예제에서는 메서드를 ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) 사용하여 텍스트 파일의 모음 수와 공백이 아닌 문자 수를 계산합니다. 이 경우 메서드에서 ParallelLoopResult 반환된 값은 무시됩니다. 작업이 병렬로 실행될 수 있으므로 카운터 변수 증가가 원자성 작업이며 여러 스레드가 동시에 카운터 변수에 액세스하지 않도록 해야 합니다. 이 목적을 위해 예제에서는 문(C#)과 SyncLock
문(Visual Basic의 경우)을 사용합니다lock
.
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
설명
body
대리자는 열거 가능 요소의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소와 함께 매개 변수로 제공됩니다.
추가 정보
적용 대상
ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 옵션을 구성할 수 있으며 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 Partitioner에 대해 실행합니다.
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
형식 매개 변수
- TSource
source
의 요소 형식입니다.
매개 변수
- source
- Partitioner<TSource>
원래 데이터 소스가 포함된 Partitioner입니다.
- parallelOptions
- ParallelOptions
이 작업의 동작을 구성하는 개체입니다.
- body
- Action<TSource,ParallelLoopState>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
parallelOptions
인수의 CancellationToken이 취소된 경우
parallelOptions
의 CancellationTokenSource과 연결된 CancellationToken가 삭제되었습니다.
source
Partitioner의 SupportsDynamicPartitions 속성은 false
를 반환합니다.
또는
source
파티셔너에 있는 모든 메서드가 null
을 반환할 때 throw되는 예외입니다.
지정된 대리자 중 하나에서 throw된 예외가 포함되도록 throw되는 예외입니다.
설명
이 오버로드는 기본 분할 체계를 재정의하려는 시나리오에 대해 제공됩니다. 예를 들어 작은 루프 본문은 범위를 분할하면 도움이 될 수 있습니다. 메서드는 Parallel.ForEach 사용자 지정 파티셔너가 동적 분할을 지원할 것으로 예상합니다. 자세한 내용은 PLINQ 및 TPL용 사용자 지정 파티셔너 및방법: 동적 파티션 구현을 참조하세요.
추가 정보
적용 대상
ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>)
- Source:
- Parallel.cs
- Source:
- Parallel.cs
- Source:
- Parallel.cs
반복을 병렬로 실행할 수 있고 루프 상태를 모니터링 및 조작할 수 있는 foreach
(Visual Basic의 경우 For Each
) 작업을 IEnumerable에 대해 실행합니다.
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
형식 매개 변수
- TSource
소스의 데이터 형식입니다.
매개 변수
- source
- IEnumerable<TSource>
열거 가능한 데이터 소스입니다.
- body
- Action<TSource,ParallelLoopState>
반복당 한 번씩 호출되는 대리자입니다.
반환
완료된 루프 부분에 대한 정보가 포함된 구조체입니다.
예외
모든 개별 예외를 포함하는 예외는 스레드에서 throw됩니다.
설명
body
대리자는 열거 가능의 각 요소에 source
대해 한 번 호출됩니다. 현재 요소 및 ParallelLoopState 루프를 조기에 중단하는 데 사용할 수 있는 instance 매개 변수와 함께 제공됩니다.
추가 정보
적용 대상
.NET