【发布时间】:2021-05-01 14:04:54
【问题描述】:
为什么这个 break 语句不起作用?我的目标是只跳出内循环,但继续处理外循环。无论我做什么,它都会击中Console.WriteLine()。
我试过了:
innerLoopState.Break()innerLoopState.Stop()
在Console.WriteLine()之前不要停止循环...
private static ParallelOptions ParallelCityOptions => new ParallelOptions
{
MaxDegreeOfParallelism = 2
};
private static ParallelOptions ParallelPeopleOptions => new ParallelOptions
{
MaxDegreeOfParallelism = 3
}
[Test]
public void NestedParallelForeach()
{
var listOfCities = new List<string> {"Atlanta", "Denver", "Scranton",};
var listOfPeople = new List<string>() {"Bob", "Sally", "Craig", "Bill"};
Parallel.ForEach(listOfCities, ParallelCityOptions, city =>
{
Parallel.ForEach(listOfPeople, ParallelPeopleOptions, (person, innerLoopState) =>
{
if (person == "Bill")
{
// do something
innerLoopState.Break();
Console.WriteLine("Should never hit this line.");
}
});
});
}
【问题讨论】:
标签: c# loops nested-loops parallel.foreach .net-framework-4.8