我正在调用一个并行的方法,但是我想让它传递一个对象。
这有效:
static void main()
{
Parallel.ForEach(_queued, new ParallelOptions { MaxDegreeOfParallelism = config.downloadthreads }, DownloadFile);
}
public static void DownloadFile(string url)
{....
}
但我想要做的是将 config 传递给 downloadfile 方法,这是我之前定义的类。我一直在我的设置和其他东西保持在类中,然后更新它们,以便我不需要在整个地方传递变量。但是当我尝试这个时,我得到了一堆错误
无法从void转换为system.action, _queued是一个并发的
Parallel.ForEach(_queued, new ParallelOptions
{ MaxDegreeOfParallelism = config.downloadthreads }, DownloadFile(_queued, config));
public static void DownloadFile(string url, blogconfig tumblogconfig)
答案 0 :(得分:8)
你需要创建一个lambda并从里面调用你的函数。
Parallel.ForEach(_queued,
new ParallelOptions { MaxDegreeOfParallelism = config.downloadthreads },
(q) => DownloadFile(q, config));