C#是否可以为DataTable对象设置内存限制大小?

时间:2018-08-02 14:46:46

标签: c# .net

我知道DataTable有一个Minimum Capacity Attribute,但是有最大容量属性吗?在用数据填充对象时,如果达到最大大小会在哪里生成异常?

例如:

DataTable table = new DataTable();

using(SqlCommand cmd = new SqlCommand(sqlQuery, sqlConn))
{
  SqlDataAdapter ds = new SqlDataAdapter(cmd);
  da.Fill(table); //generate exception if DataTable is filled with too much data (e.g. over 100mb in size)
}

1 个答案:

答案 0 :(得分:0)

两部分答案:

  1. “最小容量”属性是最初分配的数据行数,而不是 与使用的字节/ MB有关。一行可能是10个字节,也可能是多个MB,具体取决于您要加载的内容。
  2. .NET将分配所需的内容,直到不再可用为止(请参阅System.OutOfMemoryException),我相信这对大多数(即使不是全部)分配都是正确的。除非您控制所有代码,尤其是所有分配,并开始计算字节数(我不建议这样做),否则您就不能限制它了。我想不出框架中支持此功能的任何类。