2014-05-30 2 views
0

Мне интересно, есть ли возможность очистить таблицы данных информации, как только вы закончите, есть ли заметная проблема, если я не очищу таблицы. Я знаю, что процесс очистки таблицы - это только одна строка, но я задаюсь вопросом о преимуществах, которые она предоставляет, и если таблицы будут автоматически очищаться, когда я выйду из запуска приложения или они останутся до перезагрузки компьютера?Преимущества для очистки данных Таблицы

. Пример:

Me.dtSet.Tables("ExampleTable").Clear() 
+0

Для чего? У вас есть конкретная проблема? Управление памятью выполняется автоматически .NET, и вы не должны вмешиваться, если это абсолютно необходимо. Когда объект таблицы данных выходит из области действия, он должен быть очищен автоматически. Опишите свой сценарий более подробно. – Neolisk

+0

@Neolisk Я предполагаю, что я пытаюсь сказать, что мне сказали, что хорошая практика - удалить таблицы из набора данных, когда вы закончите манипулирование данными, и мне не интересно, почему мне говорят об этом; но какие выгоды, если есть какие-либо проблемы с удалением таблицы самостоятельно. – AlsoIvan

+0

Вы действительно должны заботиться только о сфере своих переменных, тогда .NET сделает очистку для вас. Где объявлен ваш набор данных? – Neolisk

ответ

0

Пожалуйста, см this thread

Он по существу утверждает, что нет никакой пользы Утилизируя DataSet/DataTable

также:

DataSet and DataTable don't actually have any unmanaged resources, so Dispose() doesn't actually do much. The Dispose() methods in DataSet and DataTable exists ONLY because of side effect of inheritance - in other words, it doesn't actually do anything useful in the finalization. 

It turns out that DataSets, DataViews, DataTables suppress finalization in their constructorsc this is why calling Dispose() on them explicitly does nothing. 

Presumably, this happens because, as mentioned above, they don’t have unmanaged resources; so despite the fact that MarshalByValueComponent makes allowances for unmanaged resources, these particular implementations don’t have the need and can therefore forgo finalization. 

Overview of this Immense Answer: 

Without a doubt, Dispose should be called on any Finalizable objects. 

DataTables are Finalizable. 

Calling Dispose significantly speeds up the reclaiming of memory. 

MarshalByValueComponent calls GC.SuppressFinalize(this) in its Dispose() - skipping this means having to wait for dozens if not hundreds of Gen0 collections before memory is reclaimed. 

От here, By: Killercam

Если те, не в полной мере ответить на ваш вопрос, возможно, прочитать this answer.

Важным вынос на ваш вопрос ->

"Does Dispose() method does not free up the memory & make object as null ??

Dispose и шаблон утилизации не для освоения управляемой памяти или„удаление“управляемые объекты (как вещи, которые вы не можете сделать и то, что сборщик мусора существует для), он предназначен для обработки удаления/освобождения неуправляемых ресурсов или других управляемых ресурсов, которые имеют выпущенные элементы, такие как SqlConnection. Это, безусловно, не приведет к отказу от ссылки, но может сделать его непригодным с момента удаления. "

Смежные вопросы