2012-04-01 3 views
0

Я работаю над проектом .NET 3.5 и буду использовать DataSet с несколькими DataTables и отношениями между DataTables. Я буду извлекать определенное количество записей из SQL для заполнения DataTables, а затем обрабатывать эти записи. После того как я закончу обработку записей, я хочу очистить DataSet и получить следующий набор записей. Я читал, что метод Clear() не очищает строки из памяти. Как я могу повторно использовать DataSet, не заставляя мою память продолжать увеличиваться в течение всего срока службы записей?Повторное использование одного и того же DataSet без проблем памяти

+0

Просто измените критерии выбора и снова вызовите Fill. Вам нужно только обходиться с набором данных, если таблицы или отношения меняются, а затем вы просто создаете новый набор данных и передаете это своим функциям обработки. –

+0

Моя забота здесь о памяти. Этот процесс будет работать на многих тысячах записей, работающих в течение многих часов. Мне нужно убедиться, что память управляется правильно. – user31673

+0

Но как только DataRow больше не ссылается, GC должен избавиться от него, Clear или Fill сделают это. Похоже на преждевременную оптимизацию для меня, выясните, оправдана ли ваша озабоченность, простое испытание POC Style сделает это. –

ответ

1

MSDN заявляет, что the DataSet.Clear method clears the DataSet of any data by removing all rows in all tables.. Он оставит все таблицы и отношения неповрежденными, но очистит все строки.

Где вы в истекшем месте?

+0

Если вы прочитали ответ сотрудника Microsoft по следующей ссылке: http://social.msdn.microsoft.com/Forums/en-US/adodotnetdataset/thread/41e1b19a-b5ee-4cf2-ac1e-ff0c9a35b961, вы увидите, что он укажите следующее: DataSet.Clear() и DataSet.Dispose() не будут очищать строки GC. Метод .Clear() удалит все строки данных в каждом datatable внутри набора данных. Кроме того, метод .Dispose() реализуется базовым классом DataSet MarshalByValueComonent, поэтому он не освобождает управляемые ресурсы набора данных. – user31673

+0

Это говорит, что строки очищаются, метаданные (отношения таблиц и т. Д.), Что хорошо, потому что маловероятно, что вы хотите, чтобы они были. Если метаданные были разными, каждый пробег, то null или назначить его новому и т. Д. –

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