Мы получаем следующее предупреждение от Code Analysis в Visual Studio 2010, и мне интересно, является ли это ложным срабатыванием, которое мы можем безопасно игнорировать, или код должен быть реорганизован для правильного удаления объекта.
Соответствующий код:
public void MyFunction()
{
OracleConnection oraConnection = null;
OracleCommand oraCommand = null;
try
{
// Connect to the database
oraConnection = new OracleConnection(connectionString);
oraConnection.Open();
// Prepare and run the query
oraCommand = new OracleCommand(sqlQuery, oraConnection);
oraCommand.ExecuteNonQuery();
}
catch { throw; }
finally
{
// Perform a safe cleanup
if (oraCommand != null) { oraCommand.Dispose(); }
if (oraConnection != null)
{
oraConnection.Close();
oraConnection.Dispose();
}
}
}
Соответствующее сообщение об ошибке:
Предупреждение 18 CA2202: Microsoft.Usage: объект 'oraConnection' может быть удален
более одного раза в методе 'ClassName.MyFunction ()'. Чтобы не генерировать
System.ObjectDisposedException, вы не должны вызывать Dispose более чем один
время на объекте.