1

我的问题集中在一些过去可以正常工作的 Parallel.ForEach 代码上,现在我们的数据库已经增长到原来的 5 倍,它几乎经常中断。

Parallel.ForEach<Stock_ListAllResult>( lbStockList.SelectedItems.Cast<Stock_ListAllResult>(), SelectedStock =>
{
    ComputeTipDown( SelectedStock.Symbol );
} );

ComputeTipDown() 方法获取该交易品种的所有每日股票 tic 数据,并遍历每一天,获取昨天的数据并进行一些计算,然后将它们插入每天的数据库中。

当公式更改时,我们很少使用它来重新计算静态数据值。

例外是:

替代文字

我们正在访问的数据库有 16 GB 的 ram,并且是双四核的,在我重新计算时没有人使用该系统。运行应用程序以重新生成代码的机器是一台笔记本电脑,具有 12 gigs 的 ram 和超线程八核。所以没有明显的资源争用。

这是我使用 .NET 4 和并行处理的尝试,所以我想知道我是否缺少某些东西。任何想法都会受到欢迎。

4

1 回答 1

1

这看起来像您收到了AggregateException,如果任何循环体方法引发异常,则 Parallel.ForEach 将引发该异常。

如果您对此进行调试,您应该能够查看InnerExceptions以查看引发的实际异常。看起来ComputeTipDown在您的一次或多次迭代中引发了异常,导致这种情况发生。

于 2010-09-30T16:50:25.150 回答