このような並列ループを使用して何かを処理したい:
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();
命令を置く場所