Сборка мусора утилизирует массив Datatable в c # - PullRequest
2 голосов
/ 07 ноября 2010

Я новичок в GC, если я хочу выпустить массив данных, достаточно ли вызова dispose () для всех его таблиц? мне нужно также установить NULL в массив данных? или каждому дататируемому?

этого достаточно?:

 DataTable[] myTables = null;
             try
             {
                 myTables = DB.GetTables();

                 // use myTables....
             }
             finally
             {
                 // Dispose Data Tables
                 if (myTables != null)
                 {
                     foreach (DataTable dt in myTables)
                     {
                         if (dt != null)
                             dt.Dispose();
                     }
                 }
             }

Ответы [ 3 ]

3 голосов
/ 07 ноября 2010

Для сборки мусора вы должны сделать ничего .

Поскольку DataTable реализует IDisposable, хорошей идеей будет вызвать Dispose() для всех из них (как вы делаете).Установка ссылок на null необходима только в очень редких ситуациях.Не здесь.

Но Dispose() - это освобождение управляемых и неуправляемых ресурсов, а не сборка мусора.
Для DataTbales Dispose () на самом деле не требуется, но вы не хотите беспокоиться, зная, что,Если у класса есть член Dispose (), вызовите его.

2 голосов
/ 07 ноября 2010

Нет, вам больше ничего не нужно делать.

Сборщик мусора знает, когда массив больше не используется, и с этого момента в коде он может собирать массив и все, что внутри него. Установка ссылки на массив или любых ссылок на таблицы данных на ноль - только ненужная работа.

1 голос
/ 07 ноября 2010

Сборка мусора является очень дорогостоящим процессом, поэтому, по своему разумению, Microsoft решила автоматизировать его таким образом, чтобы он работал, когда в системе есть резервные возможности для его запуска или когда ресурсы становятся слишком малыми.

Как общее практическое правило, вам следует беспокоиться только о явной сборке мусора, когда вы работаете с неуправляемыми объектами (такими как ссылки COM) или когда у вас возникают проблемы с производительностью, и вы обнаружите, что ручной мусорКоллекция может помочь.

...