NullReferenceException is thrown on a string on which all involved objects are valid. StackTrace shows that line # is 432.
Code

Here Flags and tempFlags are both datatables. The column data types of both data types are primitive (decimal, datetime, short). An application is a multi-threaded application, and a piece of code belongs to a stream function. Flags decalified at the instance level, that is, shared across all threads, while tempFlags declared inside the thread function.
Here in this particular instance of time, Flags contains 1946 entries and tempFlags contains 1. So why is this a NullReferenceEx exception
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
It seems that the Merge statement is not thread safe, because after putting line 432 inside the lock, the exception has passed, SO FAR.
source share