ParallelLoopState.IsStopped Vlastnost
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Získá, zda iterace smyčky má volal metodu Stop() .
public:
property bool IsStopped { bool get(); };
public bool IsStopped { get; }
member this.IsStopped : bool
Public ReadOnly Property IsStopped As Boolean
Hodnota vlastnosti
true
pokud některá iterace zastavila smyčku voláním Stop() metody; v opačném případě false
.
Příklady
Následující příklad spustí paralelně až 10 000 iterací smyčky. Každá iterace se pozastaví v náhodném intervalu od 1 do 1 000 milisekund. Náhodně vygenerovaná hodnota určuje, na které iteraci smyčky Stop je volána metoda. Vzhledem k tomu, že iterace smyčky jsou stále pravděpodobně spuštěny při Stop volání metody, lambda výraz volá metodu IsStopped ke kontrole, zda další iterace volala metodu Stop . Pokud vrátí true
, iterace se vrátí okamžitě.
using System;
using System.Threading;
using System.Threading.Tasks;
public class Example
{
public static void Main()
{
var rnd = new Random();
long stopIndex = rnd.Next(1, 11);
Console.WriteLine("Will call Stop in iteration {0}\n", stopIndex);
var result = Parallel.For(1, 10000, (i, state) => {
Console.WriteLine("Beginning iteration {0}", i);
int delay;
Monitor.Enter(rnd);
delay = rnd.Next(1, 1001);
Monitor.Exit(rnd);
Thread.Sleep(delay);
if (i == stopIndex) {
Console.WriteLine("Stop in iteration {0}", i);
state.Stop();
return;
}
if (state.IsStopped) {
return;
}
Console.WriteLine("Completed iteration {0}", i);
});
}
}
// The example displays output like the following:
// Will call Stop in iteration 5
//
// Beginning iteration 1
// Beginning iteration 9993
// Beginning iteration 8744
// Beginning iteration 6246
// Beginning iteration 7495
// Beginning iteration 3748
// Beginning iteration 4997
// Beginning iteration 2499
// Beginning iteration 1250
// Completed iteration 6246
// Beginning iteration 6247
// Completed iteration 3748
// Beginning iteration 3749
// Completed iteration 8744
// Beginning iteration 8745
// Completed iteration 7495
// Beginning iteration 7496
// Completed iteration 1250
// Beginning iteration 1251
// Completed iteration 2499
// Beginning iteration 2500
// Completed iteration 1
// Beginning iteration 2
// Completed iteration 2500
// Beginning iteration 2501
// Completed iteration 3749
// Beginning iteration 3750
// Completed iteration 6247
// Beginning iteration 6248
// Completed iteration 7496
// Beginning iteration 7497
// Completed iteration 3750
// Beginning iteration 3751
// Completed iteration 2
// Beginning iteration 3
// Completed iteration 9993
// Beginning iteration 9994
// Completed iteration 8745
// Beginning iteration 8746
// Completed iteration 4997
// Completed iteration 9994
// Beginning iteration 9995
// Beginning iteration 4998
// Completed iteration 6248
// Beginning iteration 6249
// Completed iteration 7497
// Beginning iteration 7498
// Completed iteration 1251
// Beginning iteration 1252
// Completed iteration 2501
// Beginning iteration 2502
// Completed iteration 9995
// Beginning iteration 9996
// Completed iteration 4998
// Beginning iteration 4999
// Completed iteration 2502
// Beginning iteration 2503
// Completed iteration 1252
// Beginning iteration 1253
// Completed iteration 7498
// Beginning iteration 7499
// Completed iteration 3751
// Beginning iteration 3752
// Completed iteration 9996
// Beginning iteration 9997
// Completed iteration 1253
// Beginning iteration 1254
// Completed iteration 9997
// Beginning iteration 9998
// Completed iteration 1254
// Beginning iteration 1255
// Completed iteration 6249
// Beginning iteration 6250
// Completed iteration 3
// Beginning iteration 4
// Completed iteration 4
// Beginning iteration 5
// Completed iteration 4999
// Beginning iteration 5000
// Completed iteration 8746
// Beginning iteration 8747
// Stop in iteration 5
Imports System.Threading
Imports System.Threading.Tasks
Module Example
Public Sub Main()
Dim rnd As New Random()
Dim stopIndex As Long = rnd.Next(1, 11)
Console.WriteLine("Will call Stop in iteration {0}", stopIndex)
Console.WriteLine()
Dim result = Parallel.For(1, 10000, Sub(i, state)
Console.WriteLine("Beginning iteration {0}", i)
Dim delay As Integer
Monitor.Enter(rnd)
delay = rnd.Next(1, 1001)
Monitor.Exit(rnd)
Thread.Sleep(delay)
If i = stopIndex Then
Console.WriteLine("Stop in iteration {0}", i)
state.Stop()
Return
End If
If state.IsStopped Then
Return
End If
Console.WriteLine("Completed iteration {0}", i)
End Sub)
End Sub
End Module
' The example displays output like the following:
' Will call Stop in iteration 5
'
' Beginning iteration 1
' Beginning iteration 9993
' Beginning iteration 8744
' Beginning iteration 6246
' Beginning iteration 7495
' Beginning iteration 3748
' Beginning iteration 4997
' Beginning iteration 2499
' Beginning iteration 1250
' Completed iteration 6246
' Beginning iteration 6247
' Completed iteration 3748
' Beginning iteration 3749
' Completed iteration 8744
' Beginning iteration 8745
' Completed iteration 7495
' Beginning iteration 7496
' Completed iteration 1250
' Beginning iteration 1251
' Completed iteration 2499
' Beginning iteration 2500
' Completed iteration 1
' Beginning iteration 2
' Completed iteration 2500
' Beginning iteration 2501
' Completed iteration 3749
' Beginning iteration 3750
' Completed iteration 6247
' Beginning iteration 6248
' Completed iteration 7496
' Beginning iteration 7497
' Completed iteration 3750
' Beginning iteration 3751
' Completed iteration 2
' Beginning iteration 3
' Completed iteration 9993
' Beginning iteration 9994
' Completed iteration 8745
' Beginning iteration 8746
' Completed iteration 4997
' Completed iteration 9994
' Beginning iteration 9995
' Beginning iteration 4998
' Completed iteration 6248
' Beginning iteration 6249
' Completed iteration 7497
' Beginning iteration 7498
' Completed iteration 1251
' Beginning iteration 1252
' Completed iteration 2501
' Beginning iteration 2502
' Completed iteration 9995
' Beginning iteration 9996
' Completed iteration 4998
' Beginning iteration 4999
' Completed iteration 2502
' Beginning iteration 2503
' Completed iteration 1252
' Beginning iteration 1253
' Completed iteration 7498
' Beginning iteration 7499
' Completed iteration 3751
' Beginning iteration 3752
' Completed iteration 9996
' Beginning iteration 9997
' Completed iteration 1253
' Beginning iteration 1254
' Completed iteration 9997
' Beginning iteration 9998
' Completed iteration 1254
' Beginning iteration 1255
' Completed iteration 6249
' Beginning iteration 6250
' Completed iteration 3
' Beginning iteration 4
' Completed iteration 4
' Beginning iteration 5
' Completed iteration 4999
' Beginning iteration 5000
' Completed iteration 8746
' Beginning iteration 8747
' Stop in iteration 5
Poznámky
U dlouhotrvajících iterací smyčky můžete načíst hodnotu IsStopped vlastnosti a určit, zda jsou stále spuštěny nějaké iterace smyčky, které byly zahájeny před voláním Stop metody. Pak můžete použít hodnotu IsStopped vlastnosti k určení, zda se mají vrátit okamžitě, nebo provést normálně.