Parallel::ForEach<TSource> Method (OrderablePartitioner<TSource>^, ParallelOptions^, Action<TSource, ParallelLoopState^, Int64>^)
Executes a foreach (For Each in Visual Basic) operation on a OrderablePartitioner<TSource> in which iterations may run in parallel, loop options can be configured, and the state of the loop can be monitored and manipulated.
Assembly: mscorlib (in mscorlib.dll)
public: generic<typename TSource> static ParallelLoopResult ForEach( OrderablePartitioner<TSource>^ source, ParallelOptions^ parallelOptions, Action<TSource, ParallelLoopState^, long long>^ body )
Parameters
- source
-
Type:
System.Collections.Concurrent::OrderablePartitioner<TSource>^
The orderable partitioner that contains the original data source.
- parallelOptions
-
Type:
System.Threading.Tasks::ParallelOptions^
An object that configures the behavior of this operation.
- body
-
Type:
System::Action<TSource, ParallelLoopState^, Int64>^
The delegate that is invoked once per iteration.
Return Value
Type: System.Threading.Tasks::ParallelLoopResultA structure that contains information about which portion of the loop completed.
Type Parameters
- TSource
The type of the elements in source.
| Exception | Condition |
|---|---|
| OperationCanceledException | The CancellationToken in the parallelOptions argument is canceled |
| ArgumentNullException | The source argument is null. -or- The parallelOptions argument is null. -or- The body argument is null. |
| ObjectDisposedException | The CancellationTokenSource associated with the CancellationToken in the parallelOptions has been disposed. |
| InvalidOperationException | The SupportsDynamicPartitions property in the source orderable partitioner returns false. -or- The KeysNormalized property in the source orderable partitioner returns false. -or- The exception that is thrown when any methods in the source orderable partitioner return null. |
This overload is provided for scenarios where you want to override the default partitioning scheme. For example, small loop bodies might benefit from partitioning the range. The Parallel::ForEach<TSource>method expects custom partitioners to support dynamic partitioning. For more information, see Custom Partitioners for PLINQ and TPL and How to: Implement Dynamic Partitions.
Available since 8
.NET Framework
Available since 4.0
Portable Class Library
Supported in: portable .NET platforms
Windows Phone
Available since 8.1