Потокобезопасен ли ADO.NET?
Простой запрос вида:
Dim Connection As SqlClient.SqlConnection = New SqlClient.SqlConnection(ConnectionSettings.ConnectionString)
Dim Command As System.Data.SqlClient.SqlCommand
Connection.Open()
Command = RequestBuilder.GetSomeData() 'тут заполняется commandtext и параметры запроса
Command.CommandTimeout = FCommandTimeout
Command.Connection = Connection
DataSetAdapter = New SqlClient.SqlDataAdapter(Command)
DS = New System.Data.DataSet("GetSomeData")
Try
DataSetAdapter.Fill(DS)
Finally
If Connection IsNot Nothing AndAlso Connection.State = ConnectionState.Open Then
Connection.Close()
End If
End Try
Возвращает совершенно «левые» данные, возможно из запроса, который выполняется в параллельном потоке (дефект проявляется только при многопоточной работе). Как бороться и почему оно так?