私の質問は、以前は確実に機能していたParallel.ForEachコードに焦点を当てていますが、データベースが5倍に拡大したため、ほぼ定期的に壊れています。
Parallel.ForEach<Stock_ListAllResult>( lbStockList.SelectedItems.Cast<Stock_ListAllResult>(), SelectedStock =>
{
ComputeTipDown( SelectedStock.Symbol );
} );
ComputeTipDown()メソッドは、シンボルのすべての毎日の株価データを取得し、毎日繰り返し、昨日のデータを取得していくつかの計算を実行し、それらを毎日データベースに挿入します。
数式が変更されたときに静的データ値を再計算するためにこれを使用することはめったにありません。
例外はこれです:
私たちがヒットしているデータベースには16ギガのRAMがあり、デュアルクアッドコアであり、再計算中に誰もシステムを使用していませんでした。コードを再生成するためにアプリケーションを実行しているマシンは、ハイパースレッディングオクタルコアを備えた12ギガのRAMを搭載したラップトップです。したがって、明らかなリソースの競合はありませんでした。
これは、.NET 4と並列処理を使用するための私の取り組みです。そのため、何か足りないものがあるのではないかと思います。どんな考えでも歓迎します。