Ich erhalte eine Ausnahme "Ein oder mehrere Fehler sind aufgetreten" in meiner parallel.for-Schleife:
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)
Die Anwendung nimmt eine Sammlung von Structs, wobei jedes Objekt Metadaten enthält, und fügt sie in eine Datenbank ein.
Der beanstandete Code lautet wie folgt:
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 = das Sammelobjekt.
records = eine Liste von Structs mit Metadaten
Felder = eine Struktur in jedem Datensatz. Jeder Datensatz enthält eine Liste dieser Felder.
Dies ist im Wesentlichen eine Tabelle, mit einer Struktur für eine Zeile (die auch einige Metadaten über jede Zeile enthält) und Strukturen für Zellen. Dieser Fehler scheint zufällig aufzutreten. Was mache ich hier falsch?