これまで、PLINQを使用して、forループをマルチタスク速度のデーモンに変えるのは簡単でした。
しかし、コレクションのコレクションを処理するために苦労しています。
私はおそらくこれを自分で理解するでしょうが、他の人がこれをどのように解決するかを見るのも役立つだろうと思いました。
更新:以下のコードには概念上の問題があると確信していますが、完全に言葉で表現することはできませんでした。誰かが私が話していることを見ることができれば、素晴らしいですが、私はこれについてもっと考えて、質問を全体的に改善しようとします(または、それが完全に私の間違いだとわかった場合は削除します)
主なロジックは次のとおりです。
public static void Execute()
{
var service = Locator.Get<ICakeService>();
using (var db = new Cake.Model.CakeContainer())
{
foreach (var campaigns in service.ExportCampaigns())
{
// --> THIS LOOP SHOULD BE EXECUTED IN A SEPARATE THREAD
foreach (var campaign in campaigns)
{
// ... logic to process a campaign ...
}
}
}
}
サービスは次のとおりです。
public IEnumerable<campaign[]> ExportCampaigns()
{
campaign[] result = null;
var service = new exportSoapClient("exportSoap");
// --> IF I DO A PARALLEL FOREACH HERE THE CLIENT CODE ABOVE
// STOPS MAKING SENSE TO ME...
foreach (var offer in this.ExportOffers())
{
var response = service.Campaigns(
api_key: this.apiKey,
offer_id: offer.offer_id);
yield return result;
}
}