1

下面给出的是示例代码。

            string[] str = new string[10];
            str[0] = "A";
            str[1] = "B";
            .... and so on.

            Parallel.Invoke(() =>
            {
                foreach(string temp in str)
                {
                MainFunc(temp);
                }

            });

我想动态调用“MainFunc”方法 10 次。因此,我使用了 foreach 循环。但是,该方法只运行一次。请帮忙。提前致谢 :)

4

2 回答 2

1

Parallel.Execute执行每个提供的操作,可能是并行的。在这种情况下,您只有一个动作,因此它只执行一次

如果您正在寻找对每个的并行调用,请str 使用它。

 Parallel.ForEach(str, (temp) => 
 {
       MainFunc(temp);
 }
于 2016-07-26T05:10:58.933 回答
0

您对 Parallel.Invoke 的使用不正确。此方法接受一个或多个Actions 并在并行中执行它们。您只发送一个动作,因此 10 次迭代一个接一个地执行。但是,您MainFunc应该运行 10 次(基于字符串数组的长度。

要并行执行上述逻辑,请使用Parallel.ForEach()

Parallel.ForEach(str, (temp) => MainFunc(temp));
于 2016-07-26T05:10:44.537 回答