parallel.foreach传递给方法的多个参数

use*_*025 6 c# parallel-processing methods foreach arguments

我正在调用一个并行的方法,它工作正常,但我想让它传递一个对象.

这有效:

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

但我想要做的是通过配置这是我刚才所定义的类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)
Run Code Online (Sandbox Code Playgroud)

Sco*_*ain 8

你需要创建一个lambda并从里面调用你的函数.

Parallel.ForEach(_queued, 
                 new ParallelOptions { MaxDegreeOfParallelism = config.downloadthreads }, 
                 (q) => DownloadFile(q, config));
Run Code Online (Sandbox Code Playgroud)