If you are using threads with a dataset, that error will occur.
In my case, I was trying to create a new row for a dataset within a method that was running in threads.
One way was to use SyncLock around the method that creates the row or another way (and probably even better) was to create the rows outside of threads.
Basically my code looks something like this:
Dim elements As New List(Of element)
Dim dataRows As New List(Of MyDataSet.Row)
For i As Integer = 0 To elements.Count - 1
dataRows.Add(Me.Ds.Elements.NewElementsRow)
Next
Parallel.For(0, elements.Count, Sub(i As Integer)
Me.CreateElementRow(elements(i), dataRows(i))
End Sub)
In the CreateElementRow method I'm doing a lot of calculations in threads.
Hope this helps.