我的代码如下
public void DownloadConcurrent(Action<string> Methord)
{
Action<string>[] methordList = new Action<string>[Concurent_Downloads];
for (int i = 0; i < Concurent_Downloads; i++)
{
methordList[i] = Methord;
}
Parallel.Invoke(methordList);
}
Parallel.Invoke 给出错误:
"cannot convert from 'System.Action<string>[]' to 'System.Action[]'"
它正在调用的方法是
public void DownloadLinks(string Term)
{
}
答案 0 :(得分:5)
检查Parallel.ForEach,如下所示
static void Main(string[] args)
{
List<string> p = new List<string>() { "Test", "Test2", "Test3"};
Parallel.ForEach(p, Test);
}
public static void Test(string test)
{
Debug.WriteLine(test);
}
这应该是你的伎俩
HTH 多米尼克
答案 1 :(得分:2)
在您的情况下,使用
会更容易Parallel.ForEach
在您的字符串列表上而不是使用
Parallel.Invoke
附加参数。如果你想坚持使用Parallel.Invoke,请告诉我。
答案 2 :(得分:1)
Parallel.Invoke
数组时, Action
接受Action<string>
数组。你能做的是:
public void DownloadConcurrent(Action<string> Methord)
{
Action<string>[] methordList = new Action<string>[Concurent_Downloads];
var r = methordList.Select(a => (Action)(() => a("some_str"))).ToArray();
Parallel.Invoke(r);
}
您需要将some_str替换为每个操作的适当值