私は非常に単純なアプリケーションを持っており、それにWebサイトのリストをフィードし、それらに対して並列foreachを実行し、各アクション内でhttp投稿を実行します。
以下のように:
static int success = 0
static void Main(string[] args) {
try {
Parallel.ForEach(sites, site=> {
try{
if(DoWebPost(site)) {
Console.Write("Posted {0} - {1}", ++success, site);
}
} catch {}
});
} catch {}
}
なぜOutOfMemoryExceptionがスローされるのか、ましてやアプリケーション全体がクラッシュする理由は言うまでもなく、キャッチして続行するだけではありません。
編集:例外が発生する場所は正確にはわかりません。ローカルでは発生しないため、本番環境で実行している場合にのみ発生します...つまり、デバッグは利用できません。アプリケーションは64ビットであり、100メガバイトを超えることはめったにありません。