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