如何在 parallel.invoke 中动态添加方法
How to add methods dynamically inside a 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 循环。但是,该方法 运行 只有一次。请帮忙。提前致谢:)
您对 Parallel.Invoke 的用法不正确。此方法接受一个或多个 Action
并以并行方式执行它们。您只发送一个 Action,因此 10 次迭代一个接一个地执行。但是,您的 MainFunc
应该 运行 10 次(基于字符串数组的长度。
要并行执行上述逻辑,请使用Parallel.ForEach()
:
Parallel.ForEach(str, (temp) => MainFunc(temp));
Parallel.Execute
执行每个提供的操作,可能是并行的。在这种情况下,您只有一个操作,因此它只执行 一次。
如果您正在寻找对每个 str
的并行调用,那么使用这个。
Parallel.ForEach(str, (temp) =>
{
MainFunc(temp);
}
下面给出了示例代码。
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 循环。但是,该方法 运行 只有一次。请帮忙。提前致谢:)
您对 Parallel.Invoke 的用法不正确。此方法接受一个或多个 Action
并以并行方式执行它们。您只发送一个 Action,因此 10 次迭代一个接一个地执行。但是,您的 MainFunc
应该 运行 10 次(基于字符串数组的长度。
要并行执行上述逻辑,请使用Parallel.ForEach()
:
Parallel.ForEach(str, (temp) => MainFunc(temp));
Parallel.Execute
执行每个提供的操作,可能是并行的。在这种情况下,您只有一个操作,因此它只执行 一次。
如果您正在寻找对每个 str
的并行调用,那么使用这个。
Parallel.ForEach(str, (temp) =>
{
MainFunc(temp);
}