如何在parallel.invoke中动态添加方法

时间:2016-07-26 05:04:33

标签: c# parallel.invoke

以下是示例代码。

            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循环。但是,该方法只运行一次。请帮忙。在此先感谢:)

2 个答案:

答案 0 :(得分:0)

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

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

Parallel.ForEach(str, (temp) => MainFunc(temp));

答案 1 :(得分:0)

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

如果您正在寻找每个str的并行呼叫,请使用此功能。

 Parallel.ForEach(str, (temp) => 
 {
       MainFunc(temp);
 }