2010-08-27 1 views
2

Я использовал, чтобы закрыть открытую DataReader с помощью TRY/поймать/наконец блок:.NET MySql делает «Использование» закрывает datareader?

Dim dr As MySqlDataReader = Nothing 
Try 
    dr = DBConnection.callReadingStoredProcedure("my_sp") 

Catch ex As Exception 
    ' the caller will handle this 
    Throw ex 
Finally 
    If dr IsNot Nothing Then dr.Close() 
End Try 

Но я думаю, что это должно быть чисты (и несколько быстрее) использовать «Использование» VB ключевым слово:

Using dr As MySqlDataReader = DBConnection.callReadingStoredProcedure("my_sp") 

End Using 
' dr is surely disposed, but is it closed? 

Выполняет ли интерфейс IDispose (требуется с помощью) Close на DataReader?

ответ

7

Объект будет утилизирован. Да, это закрывает DataReader.

+0

Я считаю, что он унаследован от IDataReader, наследующего IDisposable. Я вполне уверен, что это поведение, которое Microsoft будет применять. – IAbstract

0

Считыватель будет закрыт, но это не обязательно для подключения базы данных, поскольку оно управляется пулом соединений ADO.NET. Проверьте этот ответ для получения дополнительной информации: C# MySqlConnection won't close