使用C#的System.OutofMemoryException

时间:2013-10-09 07:36:55

标签: c# exception

请在下面找到我的代码以生成网址列表。

List<string> urls = new  List<string>();   
int curr_Page = 1;
int end_Page = 2000;

for(int pages = curr_Page; pages < end_Page;pages++)
{
    for (int cno = 1;cno < 126001; cno++)   
    {   
          urls.Add("http://sources.domerig.com/list.php?cno=" + cno.ToString() + "&page=" + pages.ToString());   
    }
}
return  ScriptUtils.ArrayToDataTable("url", urls.ToArray());   
}   

上面的代码给出了SystemOutOfMemoryException。

有没有解决方法可以解决这个问题。

谢谢

1 个答案:

答案 0 :(得分:4)

这将创建251,874,000个字符串的列表。然后使用ToArray从中创建一个新数组。之后,您拨打ArrayToDataTable sems,从中创建一个新的DataTable

你想知道为什么得到OutOfMemoryException?为什么呢?

如果您需要使用一列DataTable创建Url,您可以首先执行此操作:

DataTable tblUrls = new DataTable();
tblUrls.Columns.Add("Url");
for(int pages = curr_Page; pages < end_Page;pages++)
{
    for (int cno = 1;cno < 126001; cno++)   
    {   
        tblUrls.Rows.Add("http://sources.domerig.com/list.php?cno=" + cno.ToString() + "&page=" + pages.ToString());
    }
}