Parallel.ForEach Metódus
Definíció
Fontos
Egyes információk olyan, kiadás előtti termékekre vonatkoznak, amelyek a kiadásig még jelentősen módosulhatnak. A Microsoft nem vállal kifejezett vagy törvényi garanciát az itt megjelenő információért.
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<TSource,TLocal>(IEnumerable<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Egy |
| ForEach<TSource,TLocal>(Partitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Egy |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, ParallelOptions, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Egy |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Végrehajt egy |
| ForEach<TSource,TLocal>(IEnumerable<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Végrehajt egy |
| ForEach<TSource,TLocal>(Partitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,TLocal,TLocal>, Action<TLocal>) |
Egy |
| ForEach<TSource,TLocal>(OrderablePartitioner<TSource>, Func<TLocal>, Func<TSource,ParallelLoopState,Int64,TLocal,TLocal>, Action<TLocal>) |
Egy |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource>) |
Végrehajt egy |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Egy |
| ForEach<TSource>(OrderablePartitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Végrehajt egy |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource>) |
Végrehajt egy |
| ForEach<TSource>(IEnumerable<TSource>, ParallelOptions, Action<TSource,ParallelLoopState,Int64>) |
Végrehajt egy |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource,ParallelLoopState>) |
Végrehajt egy |
| ForEach<TSource>(Partitioner<TSource>, Action<TSource>) |
Végrehajt egy |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Végrehajt egy |
| ForEach<TSource>(OrderablePartitioner<TSource>, Action<TSource,ParallelLoopState,Int64>) |
Végrehajt egy |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource>) |
Végrehajt egy |
| ForEach<TSource>(Partitioner<TSource>, ParallelOptions, Action<TSource,ParallelLoopState>) |
Végrehajt egy |
| ForEach<TSource>(IEnumerable<TSource>, Action<TSource,ParallelLoopState>) |
Végrehajt egy |
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
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
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
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
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ó.