Когда я запускаю анализа кода с помощью следующего кода:Как я могу предотвратить повторное удаление этого кода несколькими объектами?
Protected Function GetOrderEntry() As IList(Of OE)
Dim results As IList(Of OE) = New List(Of OE)()
Using connection As IDbConnection = DbProviderFactories.GetFactory("System.Data.SqlClient").CreateConnection()
connection.ConnectionString = ConfigurationManager.AppSettings("OrderEnterConnection")
Using command As IDbCommand = connection.CreateCommand()
command.CommandTimeout = 120
command.CommandText = "Exec up_ViewOrderDetail_2012_Order '" & MemberNo1.Value & "','" & CustNo.Value & "','DEFAULT','" & OrderNo.Value & "','" & DeliveryDate.SelectedDate & "','','','','1'"
connection.Open()
Try
Dim reader As IDataReader = command.ExecuteReader()
results = PopulateGrid(reader)
Catch ex As SqlException
results.Clear()
connection.Close()
End Try
End Using
End Using
Return results
End Function
... Я получаю,
"CA2202 Не бросайте объекты Object„соединение“несколько раз может быть расположено более один раз в методе «OrderConfirm.GetOrderEntry()». Для того, чтобы избежать генерации System.ObjectDisposedException не следует вызывать Dispose больше, чем один раз на объекте "
Курсор находится на последней строке «End Using»; howis это рассматривается как двойное удаление объектов? Разве оба блока «Использование» не должны быть прекращены таким образом?
http://stackoverflow.com/q/14706523/1070452 Там нет необходимости, чтобы закрыть соединение, утилизацией он делает это. Этот читатель, с другой стороны, также должен быть удален (ну, во всяком случае, они IDisposable) – Plutonix