【发布时间】:2012-04-15 11:24:20
【问题描述】:
我正在开发一个 .NET 3.5 项目,并将使用具有多个 DataTables 和 DataTables 之间关系的 DataSet。我将从 SQL 中获取一定数量的记录来填充 DataTables,然后处理这些记录。处理完记录后,我想清除 DataSet 并获取下一组记录。我一直在阅读 Clear() 方法不会从内存中清除行。如何在获取记录的整个生命周期内重复使用 DataSet 而不会导致内存继续增加?
【问题讨论】:
-
只需更改您的选择标准并再次调用 Fill。如果表或关系发生变化,您只需要处理数据集,然后您只需创建一个新数据集并将其传递给您的处理函数。
-
我关心的是内存。此过程将处理运行数小时的数千条记录。我需要确保正确管理内存。
-
但是一旦 DataRow 不再被引用,GC 应该摆脱它,Clear 或 Fill 会这样做。对我来说似乎是过早的优化,看看你的担心是否合理,一个简单的 POC Style 试验就可以做到。