【发布时间】:2012-09-25 13:33:22
【问题描述】:
如何在 Parallel.Foreach 中定义计数器并停止特定数量的战利品?
我问这个问题是因为 Parallel.ForEach 中的计数器在常规操作中不起作用。
请看这个小例子:
static void Main(string[] args)
{
int Count_Step = -1;
string[] lines = new string[]
{
"0",
"1",
"2",
"3",
"4",
"5",
"6",
"7",
"8",
"9",
"10",
"11",
"12",
"13",
"14",
"15",
"16",
"17",
"18",
"19"
};
List<string> list_lines = new List<string>(lines);
ParallelOptions parallelOptions = new ParallelOptions();
parallelOptions.MaxDegreeOfParallelism = 3;
Parallel.ForEach(list_lines, parallelOptions, (line, state, index) =>
{
if (Count_Step == 10)
state.Stop();
Count_Step++;
Console.WriteLine(index + " : " + line + " : " + Count_Step);
//Thread.Sleep(5000);
});
Console.ReadLine();
}
我想要输出 10 行,而不是更多!
我该怎么做?
提前致谢
【问题讨论】:
-
您是只想并行处理列表中的前 10 项,还是只想并行处理任意 10 项,然后在完成 10 项后停止?
-
任意10个项目并行,然后在你完成10个后停止
标签: c# .net-4.0 console-application parallel.foreach