NullReferenceException
jest wyrzucane na linii, na której wszystkie zaangażowane obiekty są ważne. StackTrace
pokazuje linia # jest 432.NullReferenceException podczas obiekty zaangażowane są ważne
Kod jest
Tutaj Flags
i tempFlags
oba są DataTables. Typy danych kolumn obu datatables są prymitywne (dziesiętne, datetime, krótkie). Aplikacja jest aplikacją wielowątkową, a fragment kodu należy do funkcji wątku. Flags
jest decalred na przykład poziomu to znaczy wspólną wszystkich nici podczas tempFlags
deklaruje wewnątrz funkcji nici.
Tutaj w tym szczególnym przypadku czasu Flags
zawiera 1946 rekordów i tempFlags
zawiera 1. Dlaczego jest to wyjątek NullReferenceException?
Edit # 1
ex.InnerException
null
ex.StackTrace
at System.Data.DataTable.RecordStateChanged(Int32 record1, DataViewRowState oldState1, DataViewRowState newState1, Int32 record2, DataViewRowState oldState2, DataViewRowState newState2)
at System.Data.DataTable.InsertRow(DataRow row, Int64 proposedID)
at System.Data.DataTable.MergeRow(DataRow row, DataRow targetRow, Boolean preserveChanges, Index idxSearch)
at System.Data.Merger.MergeTable(DataTable src, DataTable dst)
at System.Data.Merger.MergeTableData(DataTable src)
at System.Data.Merger.MergeTable(DataTable src)
at System.Data.DataTable.Merge(DataTable table, Boolean preserveChanges, MissingSchemaAction missingSchemaAction)
at System.Data.DataTable.Merge(DataTable table)
at [...].cs:line 432"
ex.Data
{System.Collections.ListDictionaryInternal}
[System.Collections.ListDictionaryInternal]: {System.Collections.ListDictionaryInternal}
IsFixedSize: false
IsReadOnly: false
Keys: {System.Collections.ListDictionaryInternal.NodeKeyValueCollection}
Values: {System.Collections.ListDictionaryInternal.NodeKeyValueCollection}
ex.Message
"Object reference not set to an instance of an object."
ex.Source
"System.Data"
Edit # 2
Wygląda oświadczenie Merge nie jest wątku bezpieczne jak po oddaniu linii 432 wewnątrz zamka, wyjątek nie ma, jak dotąd .
Używasz blokady dla tempFlags? podczas czyszczenia plików tymczasowych. – Adil
Czy możesz zamieścić szczegóły wyjątku? Wewnętrzny wyjątek, ślad stosu itp. – ryadavilli
@Adil Nie powinno mieć znaczenia, prawda? Wyjątek jest zgłaszany przed tą linią, a 'tempFlags' jest lokalną zmienną w metodzie. –