Я отменяю твиты твиттера, запускаю несколько фоновых рабочих, и они делают следующее:
For x as Integer = 0 to 5
Dim BGW As New BackgroundWorker
AddHandler BGW.DoWork, AddressOf TweetGrab
BGW.RunWorkerAsync(tweeturl)
Next
Public TemporaryRows As New List(Of DataRow)
Private Sub TweetGrab(tweeturl as String)
'some html stuff here
Dim ImageUrl as String = twitterImage.Attributes("src").Value
Dim ThumbnailUrl As String = ImageUrl & ":small"
Dim DataRowTemporary As DataRow = DataTable1.NewRow()
DataRowTemporary("ImageUrl") = ImageUrl
DataRowTemporary("ThumbnailUrl") = ThumbnailUrl
DataRowTemporary("Checked") = False
'I detect the error even here
TemporaryRows.Add(DataRowTemporary)
End Sub
Позже я делаю вещи с помощью TemporaryRows. Я oop над строками и проверяю, удовлетворяют ли они некоторым условиям.
Проблема в том, что DataRowTemporary("Checked")
заканчивается как DBNull и DataRowTemporary("ThumbnailUrl")
полностью отличается от ImageUrl
, хотя я указал Dim ThumbnailUrl As String = ImageUrl & ":small"
Это происходит примерно в 2/10 случаях. Я предполагаю, что это как-то связано с фоновыми потоками, но у меня нет идей, как это решить. Я могу изменить поля после возникновения ошибки, но я бы хотел предотвратить возникновение ошибки.