Take the 2-minute tour ×

Suppose you have an array of 1000 random integer numbers and you need to loop over it to find the number 68 for example.

Using the new Parallel.For on a quad core CPU would improve speed considerably, making each core to work only 250 array items.

The question is: is it possible to interrupt the Parallel.For loop when the following condition is met?

if (integerArray[i] == 68)



share|improve this question
add comment

2 Answers

up vote 8 down vote accepted

If you want to stop after the current executing iteration are done (but iterations before the current WILL be executed - that is, the iterations with a lower index = i)

Parallel.For(0, 100, (i, s) =>

or if you want to stop after the current and interations before this (in terms of index = i) should also stop


but in BOTH cases it is good practice to check if the work should be aborted if the iteration can take a while


read more here Parallel.For Method (Int32, Int32, Action(Int32, ParallelLoopState))

share|improve this answer
I mixed up some notion about Break and Stop - please reread the answer :) –  Lasse Espeholt Aug 21 '10 at 20:18
add comment

It sounds to me that you should look into PLINQ (Parallel LINQ) to execute a parallel query, rather than a parallel for.

share|improve this answer
Correct for this (simple) example. But it is a more general question. –  Henk Holterman Aug 21 '10 at 21:01
add comment

Your Answer


