我的 parallel.for 循环中出现“发生一个或多个错误”异常:
at System.Threading.Tasks.Task.ThrowIfExceptional(Boolean includeTaskCanceledExceptions)
at System.Threading.Tasks.Task.Wait(Int32 millisecondsTimeout, CancellationToken cancellationToken)
at System.Threading.Tasks.Task.Wait()
at System.Threading.Tasks.Parallel.ForWorker[TLocal](Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body, Action`2 bodyWithState, Func`4 bodyWithLocal, Func`1 localInit, Action`1 localFinally)
at System.Threading.Tasks.Parallel.For(Int32 fromInclusive, Int32 toExclusive, ParallelOptions parallelOptions, Action`1 body)
at StaticClassLibrary.BLL.StaticClass.StatiMethod(String strExt, Object wTable, Object job, String BSPConnectionString) in c:\Users\FredWAD\Documents\Visual Studio 2010\Projects\PayrollCenterLibrary\BLL\ContributionFileManager.cs:line 218
at myapp.staticlibrary.staticmethod(String str1, String str2)
该应用程序采用结构集合,每个对象都包含元数据,并将它们插入数据库。
违规代码如下:
Parallel.For(0, recordCnt, pOptions, d =>
{
//flds = wTable.records[d].fields;
ssn = wTable.records[d].fields[fieldIndex].Value;
//rowId = wTable.records[d].fields[fieldIndex].rowId;
currentPerson = PersontManager.GetPerson(string1, string2);
hasContributions = WorkTableManager.RowHasContributionsNEW(List<string> lst, wTable.records[d]);
LoadRecordParallel(hasLoan, hasScratchpad, fieldIndex, wTable.records[d], object, string, string);
}
);
wTable = 集合对象。
记录 = 包含元数据的结构列表
fields = 每条记录中的结构。每条记录都包含这些列表。
这本质上是一个表,其中包含一行结构(其中还包含有关每行的一些元数据)和单元格结构。此错误似乎是随机发生的。我在这里做错了什么?