Parallel.ForEach Metódus

Definíció

Végrehajt egy foreach (For Each Visual Basic) műveletet, amelyben az iterációk párhuzamosan futhatnak.

Túlterhelések

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

Végrehajt egy foreach (For Each Visual Basic) műveletet szál-helyi adatokkal egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal és 64 bites indexekkel egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Egy foreach (For Each Visual Basic) műveletet hajt végre 64 bites indexekkel és szál-helyi adatokkal egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet szál-helyi adatokkal egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet szál-helyi adatokkal egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a ciklus állapota monitorozásra és manipulálásra is használható.

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

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, és a ciklus állapota figyelhető és módosítható.

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

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és konfigurálhatók a ciklusbeállítások.

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

Egy foreach (For Each Visual Basic) műveletet hajt végre egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, valamint a hurok állapota monitorozásra és manipulálásra.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, és konfigurálhatók a ciklusbeállítások.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet 64 bites indexekkel egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet 64 bites indexekkel egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Végrehajt egy foreach (For Each Visual Basic) műveletet egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet szál-helyi adatokkal egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit argumentum a következő null: .

-vagy-

Az localFinally argumentum a következő null: .

Az CancellationToken argumentumban szereplő parallelOptions érték megszakad.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A következő paraméterekkel rendelkezik: az aktuális elem, egy ParallelLoopState példány, amely idő előtt bontható ki a hurokból, és néhány helyi állapot, amely megosztható az ugyanazon a szálon futó iterációk között.

A localInit rendszer minden olyan tevékenységhez meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes tevékenységek utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally rendszer szálonként egyszer hívja meg a meghatalmazottat, hogy végleges műveletet hajtson végre az egyes tevékenységek helyi állapotán. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal és 64 bites indexekkel egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

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

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit argumentum a következő null: .

-vagy-

Az localFinally argumentum a következő null: .

Az CancellationToken argumentumban szereplő parallelOptions érték megszakad.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A rendszer a következő paraméterekkel rendelkezik: az aktuális elem, egy ParallelLoopState példány, amely idő előtt bontható ki a hurokból, az aktuális elem indexe (Int64) és néhány helyi állapot, amely megosztható az ugyanazon a szálon végrehajtott iterációk között.

A localInit rendszer minden olyan tevékenységhez meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes tevékenységek utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally rendszer szálonként egyszer hívja meg a meghatalmazottat, hogy végleges műveletet hajtson végre az egyes tevékenységek helyi állapotán. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
Partitioner<TSource>

Az eredeti adatforrást tartalmazó particionáló.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit argumentum a következő null: .

-vagy-

Az localFinally argumentum a következő null: .

A SupportsDynamicPartitions visszaadott sourcePartitionerfalse tulajdonság vagy a particionáló partíciókat ad null vissza.

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Az CancellationToken argumentumban szereplő parallelOptions érték megszakad.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. Ez a túlterhelés olyan kis huroktestekkel rendelkező forgatókönyvek esetén érhető el, amelyek kihasználhatják a statikus tartomány particionálását. A particionálóknak támogatniuk kell a dinamikus partíciókat. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

A localInit rendszer minden olyan tevékenységhez meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes tevékenységek utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally feladatonként egyszer meghívja a meghatalmazottat, hogy az egyes tevékenységek helyi állapotán végrehajtsa a végső műveletet. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Egy foreach (For Each Visual Basic) műveletet hajt végre 64 bites indexekkel és szál-helyi adatokkal egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
OrderablePartitioner<TSource>

Az eredeti adatforrást tartalmazó rendezett particionáló.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

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

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit vagy localFinally az argumentum az null.

A SupportsDynamicPartitions visszaadott sourcePartitionerfalse tulajdonság vagy a particionáló partíciókat ad null vissza.

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Az CancellationToken argumentumban szereplő parallelOptions érték megszakad.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

A localInit rendszer minden olyan tevékenységhez meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes szálak utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally feladatonként egyszer meghívja a meghatalmazottat, hogy az egyes tevékenységek helyi állapotán végrehajtsa a végső műveletet. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet szál-helyi adatokkal egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit argumentum a következő null: .

-vagy-

Az localFinally argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Példák

Az alábbi példa bemutatja, hogyan használható egy metódus helyi ForEach állapottal:

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

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A következő paraméterekkel rendelkezik: az aktuális elem, egy ParallelLoopState példány, amely idő előtt bontható ki a hurokból, és néhány helyi állapot, amely megosztható az ugyanazon a szálon futó iterációk között.

A localInit rendszer minden olyan tevékenységhez meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes tevékenységek utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally rendszer szálonként egyszer hívja meg a meghatalmazottat, hogy végleges műveletet hajtson végre az egyes tevékenységek helyi állapotán. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet szál-helyi adatokkal egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a ciklus állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

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

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit argumentum a következő null: .

-vagy-

Az localFinally argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A rendszer a következő paraméterekkel rendelkezik: az aktuális elem, egy ParallelLoopState példány, amely idő előtt bontható ki a hurokból, az aktuális elem indexe (Int64) és néhány helyi állapot, amely megosztható az ugyanazon a szálon végrehajtott iterációk között.

A localInit rendszer minden olyan tevékenységhez meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes tevékenységek utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally feladatonként egyszer meghívja a meghatalmazottat, hogy az egyes tevékenységek helyi állapotán végrehajtsa a végső műveletet. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, és a ciklus állapota figyelhető és módosítható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
Partitioner<TSource>

Az eredeti adatforrást tartalmazó particionáló.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

body
Func<TSource,ParallelLoopState,TLocal,TLocal>

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit argumentum a következő null: .

-vagy-

Az localFinally argumentum a következő null: .

A SupportsDynamicPartitions visszaadott sourcePartitionerfalse tulajdonság vagy a particionáló partíciókat ad null vissza.

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

A localInit rendszer minden olyan szálhoz meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes tevékenységek utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally feladatonként egyszer meghívja a meghatalmazottat, hogy az egyes tevékenységek helyi állapotán végrehajtsa a végső műveletet. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Egy foreach (For Each Visual Basic) műveletet hajt végre szál-helyi adatokkal egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

TLocal

A szál helyi adatainak típusa.

Paraméterek

source
OrderablePartitioner<TSource>

Az eredeti adatforrást tartalmazó rendezett particionáló.

localInit
Func<TLocal>

A függvény delegáltja, amely az egyes tevékenységek helyi adatainak kezdeti állapotát adja vissza.

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

Az iterációnként egyszer meghívott meghatalmazott.

localFinally
Action<TLocal>

Az a meghatalmazott, aki az egyes tevékenységek helyi állapotán hajt végre egy végső műveletet.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

-vagy-

Az localInit argumentum a következő null: .

-vagy-

Az localFinally argumentum a következő null: .

A SupportsDynamicPartitions visszaadott sourcePartitionerfalse tulajdonság vagy a particionáló partíciókat ad null vissza.

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

A localInit rendszer minden olyan tevékenységhez meghívja a meghatalmazottat, amely részt vesz a ciklus végrehajtásában, és visszaadja az egyes tevékenységek kezdeti helyi állapotát. Ezek a kezdeti állapotok az egyes tevékenységek első body meghívásainak lesznek átadva. Ezután minden további törzshívás egy esetleg módosított állapotértéket ad vissza, amelyet a rendszer átad a következő törzshívásnak. Végül az egyes tevékenységek utolsó törzsmeghívása egy olyan állapotértéket ad vissza, amelyet a localFinally meghatalmazottnak ad át. A localFinally feladatonként egyszer meghívja a meghatalmazottat, hogy az egyes tevékenységek helyi állapotán végrehajtsa a végső műveletet. Ez a meghatalmazott egyszerre több tevékenységen is meghívható; ezért szinkronizálnia kell a hozzáférést a megosztott változókhoz.

A Parallel.ForEach metódus több feladatot is használhat, mint a szálak a végrehajtás teljes időtartama alatt, mivel a meglévő tevékenységek befejeződnek, és új tevékenységek váltják fel. Ez lehetőséget ad a mögöttes TaskScheduler objektumnak a ciklust kiszolgáló szálak hozzáadására, módosítására vagy eltávolítására.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és konfigurálhatók a ciklusbeállítások.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

body
Action<TSource>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az CancellationToken argumentumban szereplő parallelOptions érték megszakadt

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. Az aktuális elem paraméterként van megadva.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Egy foreach (For Each Visual Basic) műveletet hajt végre egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, valamint a hurok állapota monitorozásra és manipulálásra.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

body
Action<TSource,ParallelLoopState>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az CancellationToken argumentumban szereplő parallelOptions érték megszakadt

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A rendszer a következő paraméterekkel rendelkezik: az aktuális elem és egy ParallelLoopState példány, amely a ciklus idő előtti megszakítására használható.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

Paraméterek

source
OrderablePartitioner<TSource>

Az eredeti adatforrást tartalmazó rendezett particionáló.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

body
Action<TSource,ParallelLoopState,Int64>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az CancellationToken argumentumban szereplő parallelOptions érték megszakadt

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

A SupportsDynamicPartitions rendezhető particionáló tulajdonsága source ad vissza false.

-vagy-

A KeysNormalized rendezhető particionáló tulajdonsága source ad vissza false.

-vagy-

Az a kivétel, amely akkor lesz kivédve, ha a rendezhető particionálóban lévő source metódusok visszatérnek null.

Az a kivétel, amely a megadott meghatalmazottak egyikéből származó kivételt tartalmaz.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A Parallel.ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, és konfigurálhatók a ciklusbeállítások.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

Paraméterek

source
Partitioner<TSource>

Az eredeti adatforrást tartalmazó particionáló.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

body
Action<TSource>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az CancellationToken argumentumban szereplő parallelOptions érték megszakad.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

A SupportsDynamicPartitions particionáló tulajdonsága ad source vissza false.

-vagy-

Az a kivétel, amely akkor fordul elő, amikor a particionáló bármely metódusa source visszatér null.

Az a kivétel, amely a megadott meghatalmazottak egyikéből származó kivételt tartalmaz.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A Parallel.ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet 64 bites indexekkel egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

body
Action<TSource,ParallelLoopState,Int64>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az CancellationToken argumentumban szereplő parallelOptions érték megszakadt

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A következő paraméterekkel rendelkezik: az aktuális elem, egy ParallelLoopState példány, amely idő előtt bontható ki a hurokból, és az aktuális elem indexe (Int64).

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

Paraméterek

source
Partitioner<TSource>

Az eredeti adatforrást tartalmazó particionáló.

body
Action<TSource,ParallelLoopState>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

A SupportsDynamicPartitions particionáló tulajdonsága ad source vissza false.

-vagy-

A particionáló egyik metódusa sourcenullad vissza.

-vagy-

A GetPartitions(Int32) particionáló metódusa source nem a megfelelő számú partíciót adja vissza.

Az a kivétel, amely a megadott meghatalmazottak egyikéből származó kivételt tartalmaz.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A Parallel.ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

Paraméterek

source
Partitioner<TSource>

Az eredeti adatforrást tartalmazó particionáló.

body
Action<TSource>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

A SupportsDynamicPartitions particionáló tulajdonsága ad source vissza false.

-vagy-

Az a kivétel, amely akkor fordul elő, amikor a particionáló bármely metódusa source visszatér null.

-vagy-

A GetPartitions(Int32) particionáló metódusa source nem a megfelelő számú partíciót adja vissza.

Az a kivétel, amely a megadott meghatalmazottak egyikéből származó kivételt tartalmaz.

Példák

Az alábbi példa bemutatja, hogyan implementálhat tartományparticionálót a következőkkel Parallel.ForEachvaló használatra:

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

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A Parallel.ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet 64 bites indexekkel egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

body
Action<TSource,ParallelLoopState,Int64>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A következő paraméterekkel rendelkezik: az aktuális elem, egy ParallelLoopState példány, amely idő előtt bontható ki a hurokból, és az aktuális elem indexe (Int64).

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy OrderablePartitioner<TSource>, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

Paraméterek

source
OrderablePartitioner<TSource>

Az eredeti adatforrást tartalmazó rendezett particionáló.

body
Action<TSource,ParallelLoopState,Int64>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

A SupportsDynamicPartitions rendezhető particionáló tulajdonsága source ad vissza false.

-vagy-

A KeysNormalized forrás rendezhető particionáló tulajdonsága ad vissza false.

-vagy-

A forrás rendezhető particionálóban lévő metódusok visszaadják a következőt null:

A megadott meghatalmazottak egyike által okozott kivétel.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A Parallel.ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

body
Action<TSource>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Példák

Az alábbi példa a ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) szövegfájlban lévő magánhangzók és nem üres szóközök számának megszámlálására szolgál. Ebben az esetben a ParallelLoopResult metódus által visszaadott érték figyelmen kívül lesz hagyva. Vegye figyelembe, hogy mivel a műveletek párhuzamosan is futtathatók, meg kell győződnie arról, hogy a számlálóváltozók növelése atomi művelet, és hogy több szál nem próbál meg egyszerre hozzáférni a számlálóváltozókhoz. Ebből a célból a példa a lock utasítást (C#-ban) és a SyncLock utasítást használja (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

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. Az aktuális elem paraméterként van megadva.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy Partitioner, amelyben az iterációk párhuzamosan futhatnak, konfigurálhatók a hurok beállításai, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

Az elemek típusa a következőben source: .

Paraméterek

source
Partitioner<TSource>

Az eredeti adatforrást tartalmazó particionáló.

parallelOptions
ParallelOptions

A művelet viselkedését konfiguráló objektum.

body
Action<TSource,ParallelLoopState>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az CancellationToken argumentumban szereplő parallelOptions érték megszakad.

A CancellationTokenSource benne lévőhöz CancellationTokenparallelOptions társított el lett adva.

Az source argumentum a következő null: .

-vagy-

Az parallelOptions argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

A SupportsDynamicPartitions particionáló tulajdonsága ad source vissza false.

-vagy-

Az a kivétel, amely akkor fordul elő, amikor a particionáló bármely metódusa source visszatér null.

Az a kivétel, amely a megadott meghatalmazottak egyikéből származó kivételt tartalmaz.

Megjegyzések

Ez a túlterhelés olyan forgatókönyvek esetében van megadva, ahol felül szeretné bírálni az alapértelmezett particionálási sémát. A kis huroktestek például kihasználhatják a tartomány particionálását. A Parallel.ForEach metódus elvárja, hogy az egyéni particionálók támogassák a dinamikus particionálást. További információ: Egyéni particionálók a PLINQ-hoz és a TPL-hez , valamint útmutató: Dinamikus partíciók implementálása.

Lásd még

A következőre érvényes:

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

Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs
Forrás:
Parallel.cs

Végrehajt egy foreach (For Each Visual Basic) műveletet egy IEnumerable, amelyben az iterációk párhuzamosan futhatnak, és a hurok állapota monitorozásra és manipulálásra is használható.

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

Típusparaméterek

TSource

A forrásban lévő adatok típusa.

Paraméterek

source
IEnumerable<TSource>

Egy számbavételre alkalmas adatforrás.

body
Action<TSource,ParallelLoopState>

Az iterációnként egyszer meghívott meghatalmazott.

Válaszok

Olyan struktúra, amely információkat tartalmaz arról, hogy a ciklus melyik része fejeződött be.

Kivételek

Az source argumentum a következő null: .

-vagy-

Az body argumentum a következő null: .

Az a kivétel, amely az összes szálra vonatkozó összes egyéni kivételt tartalmazza.

Megjegyzések

A body delegáltat a rendszer egyszer hívja meg a source számba vett elemek mindegyikéhez. A rendszer a következő paraméterekkel rendelkezik: az aktuális elem és egy ParallelLoopState példány, amely a ciklus idő előtti megszakítására használható.

Lásd még

A következőre érvényes: