【发布时间】:2012-01-14 19:41:31
【问题描述】:
我想像这样使用并行循环来处理一些事情:
public void FillLogs(IEnumerable<IComputer> computers)
{
Parallel.ForEach(computers, cpt=>
{
cpt.Logs = cpt.GetRawLogs().ToList();
});
}
好的,它工作正常。但是如果我想让 FillLogs 方法返回一个 IEnumerable 怎么办?
public IEnumerable<IComputer> FillLogs(IEnumerable<IComputer> computers)
{
Parallel.ForEach(computers, cpt=>
{
cpt.Logs = cpt.GetRawLogs().ToList();
yield return cpt // KO, don't work
});
}
编辑
这似乎不可能......但我使用这样的东西:
public IEnumerable<IComputer> FillLogs(IEnumerable<IComputer> computers)
{
return computers.AsParallel().Select(cpt => cpt);
}
但是我把cpt.Logs = cpt.GetRawLogs().ToList(); 指令放在哪里
【问题讨论】:
-
你的
IEnumerable<IComputer>return-type 不会承担负载。
标签: c# yield-return parallel.foreach