DataSet и DataTable оба реализуют IDisposable, поэтому, согласно общепринятым рекомендациям, я должен вызывать их методы Dispose ().
Однако из того, что я читал до сих пор, DataSet и DataTable на самом деле не имеют никаких неуправляемых ресурсов, поэтому Dispose () на самом деле ничего не делает.
Плюс, я не могу просто использовать using(DataSet myDataSet...)
, потому что DataSet имеет коллекцию DataTables.
Итак, чтобы быть в безопасности, мне нужно перебрать myDataSet.Tables, избавиться от каждого из DataTables, а затем избавиться от DataSet.
Так стоит ли вызывать Dispose () для всех моих DataSets и DataTables?
Добавление:
Для тех из вас, кто считает, что DataSet следует утилизировать:
В общем случае шаблон для удаления должен использовать using
или try..finally
, потому что вы хотите гарантировать, что будет вызван Dispose ().
Однако, это становится ужасно быстро для коллекции. Например, что вы делаете, если один из вызовов Dispose () выдал исключение? Вы проглатываете это (что «плохо»), чтобы вы могли продолжить уничтожать следующий элемент?
Или вы предлагаете мне просто вызвать myDataSet.Dispose () и забыть об удалении DataTables в myDataSet.Tables?