Questo articolo è stato tradotto automaticamente. Per visualizzare l'articolo in inglese, selezionare la casella di controllo Inglese. È possibile anche visualizzare il testo inglese in una finestra popup posizionando il puntatore del mouse sopra il testo.
Traduzione
Inglese

Metodo Parallel.For (Int32, Int32, Action<Int32>)

.NET Framework (current version)
 

Data di pubblicazione: ottobre 2016

Esegue un ciclo for (For in Visual Basic) in cui le iterazioni possono essere eseguite in parallelo.

Spazio dei nomi:   System.Threading.Tasks
Assembly:  mscorlib (in mscorlib.dll)

public static ParallelLoopResult For(
	int fromInclusive,
	int toExclusive,
	Action<int> body
)

Parametri

fromInclusive
Type: System.Int32

Indice iniziale, incluso.

toExclusive
Type: System.Int32

Indice finale, escluso.

body
Type: System.Action<Int32>

Delegato richiamato una volta per iterazione.

Valore restituito

Type: System.Threading.Tasks.ParallelLoopResult

Struttura che contiene informazioni sulla parte di ciclo completata.

Exception Condition
ArgumentNullException

Il valore dell'argomento body è null.

AggregateException

Eccezione che contiene tutte le singole eccezioni generate in tutti i thread.

Il body delegato viene richiamato una volta per ogni valore nell'intervallo di iterazione (fromInclusive, toExclusive). Viene fornito con il conteggio delle iterazioni (Int32) come parametro.

Se fromInclusive è maggiore o uguale a toExclusive, viene restituito immediatamente senza eseguire nessuna iterazione.

Nell'esempio seguente viene utilizzata la For metodo per 100 chiamate di un delegato che viene generato l'errore byte casuali valori e calcola la somma.

using System;
using System.Threading.Tasks;

public class Example
{
   public static void Main()
   {
      ParallelLoopResult result = Parallel.For(0, 100, ctr => { Random rnd = new Random(ctr * 100000);
                                                                Byte[] bytes = new Byte[100];
                                                                rnd.NextBytes(bytes);
                                                                int sum = 0;
                                                                foreach(var byt in bytes)
                                                                    sum += byt;
                                                                Console.WriteLine("Iteration {0,2}: {1:N0}", ctr, sum);
                                                              });
      Console.WriteLine("Result: {0}", result.IsCompleted ? "Completed Normally" : 
                                                             String.Format("Completed to {0}", result.LowestBreakIteration));
   }
}
// The following is a portion of the output displayed by the example:
//       Iteration  0: 12,509
//       Iteration 50: 12,823
//       Iteration 51: 11,275
//       Iteration 52: 12,531
//       Iteration  1: 13,007
//       Iteration 53: 13,799
//       Iteration  4: 12,945
//       Iteration  2: 13,246
//       Iteration 54: 13,008
//       Iteration 55: 12,727
//       Iteration 56: 13,223
//       Iteration 57: 13,717
//       Iteration  5: 12,679
//       Iteration  3: 12,455
//       Iteration 58: 12,669
//       Iteration 59: 11,882
//       Iteration  6: 13,167
//       ...
//       Iteration 92: 12,275
//       Iteration 93: 13,282
//       Iteration 94: 12,745
//       Iteration 95: 11,957
//       Iteration 96: 12,455
//       Result: Completed Normally

Universal Windows Platform
Disponibile da 8
.NET Framework
Disponibile da 4.0
Libreria di classi portabile
Supportato in: piattaforme .NET portabili
Windows Phone
Disponibile da 8.1
Torna all'inizio
Mostra: