ParallelLoopState.IsStopped 속성
정의
중요
일부 정보는 릴리스되기 전에 상당 부분 수정될 수 있는 시험판 제품과 관련이 있습니다. Microsoft는 여기에 제공된 정보에 대해 어떠한 명시적이거나 묵시적인 보증도 하지 않습니다.
루프 반복에서 Stop() 메서드를 호출했는지 여부를 가져옵니다.
public:
property bool IsStopped { bool get(); };
public bool IsStopped { get; }
member this.IsStopped : bool
Public ReadOnly Property IsStopped As Boolean
속성 값
true
if any iteration has stopped the loop by calling the Stop() method; otherwise, false
.
예제
다음 예제에서는 루프를 최대 10,000회 병렬로 실행합니다. 각 반복은 1~1,000밀리초의 임의 간격으로 일시 중지됩니다. 임의로 생성된 값은 메서드가 호출되는 루프의 반복을 Stop 결정합니다. 루프의 반복은 메서드가 호출될 때 Stop 실행될 가능성이 높기 때문에 람다 식은 메서드를 IsStopped 호출하여 다른 반복에서 메서드를 호출 Stop 했는지 여부를 확인합니다. 반환 true
하는 경우 반복이 즉시 반환됩니다.
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
설명
루프의 장기 실행 반복의 경우 속성 값을 IsStopped 검색하여 메서드 호출 Stop 이 계속 실행되기 전에 실행을 시작한 루프의 반복이 실행 중인지 여부를 확인할 수 있습니다. 그런 다음 속성 값을 IsStopped 사용하여 즉시 반환할지 아니면 정상적으로 실행해야 하는지를 결정할 수 있습니다.