普通for循環、foreach循環中有break/continue用于流程控制,在Parallel中也有用于流程控制的方法,即ParallelLoopState類的Stop/Break方法。
看下面的代碼:
1 var ltNum = new List<int>(); 2 for (int i = 1; i <= 10; i++) 3 { 4 ltNum.Add(i); 5 } 6 Parallel.For(0, ltNum.Count, (i, loopState) => 7 { 8 if (i > 5) 9 {10 loopState.Stop();11 return;12 }13 Console.WriteLine("下標:{0},值:{1}", i, ltNum[i]);14 });
其中loopState是ParallelLoopState類實例,用于并行循環流程控制。
注意第10行:loopState.Stop(); 表示立刻退循環,不論后面要執行的循環是否滿足i>5這個條件。
假如將上面第10行代碼改為:loopState.Break(); 則表示后面滿足i>5的循環不再執行,但其它的循環體還是要執行的。
注意:不論是Break還是Stop方法,后面的return語句是必須的,否則當前循環體第13行的語句還是會被執行。
下面用一個表格比較Parallel中的Stop/Break方法與普通循環中的continue/break語句的類比。
ParrallelLoopState實例方法 | Stop() | Break() |
作用 | 退出循環,后面的循環體均不執行 | 滿足相應條件的循環體不執行 |
相當于普通循環的語句 | break; | continue |
新聞熱點
疑難解答