使用Parallel.ForEach方法传递多个参数

6

我是一名协助翻译的助手。以下是您需要翻译的内容:

我正在并行调用一个方法,它可以正常工作,但是我希望将一个对象传递给它。

以下代码可以正常运行:

static void main()
{
Parallel.ForEach(_queued, new ParallelOptions { MaxDegreeOfParallelism = config.downloadthreads }, DownloadFile);
}
public static void DownloadFile(string url)
{....
}

但是我想要做的是将我之前定义的类config传递给downloadfile方法。我已经将设置和其他内容保存在这个类中,然后更新它们,这样我就不需要在各个地方传递变量。但是当我尝试这样做时,我收到了一堆错误信息:

无法从void转换为system.action, _queued是一个concurrentqueue

Parallel.ForEach(_queued, new ParallelOptions 
{ MaxDegreeOfParallelism = config.downloadthreads }, DownloadFile(_queued, config));

public static void DownloadFile(string url, blogconfig tumblogconfig)
1个回答

10

您需要创建一个lambda并从其中调用您的函数。

Parallel.ForEach(_queued, 
                 new ParallelOptions { MaxDegreeOfParallelism = config.downloadthreads }, 
                 (q) => DownloadFile(q, config));

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接