【发布时间】:2014-05-24 00:12:39
【问题描述】:
我有一个填充数据网格视图的函数,这个函数使用分页
页面大小 = 30
在第 9 页抛出内存不足异常之前一切正常
我有 windows server 2008 R2 64 位,8 GB RAM
public static void FillDataGrid(DataGridView dataGrid, int intPageSize, int intPageIndex, out int intTotal
,string title)
{
dataGrid.Rows.Clear();
try
{
var dt = GetData(intPageSize, intPageIndex, out intTotal, title); //dt type DataTable
var dicrectory = Directory.GetCurrentDirectory();
for (var i = 0; i < dt.Rows.Count; i++)
{
var uri = new Uri(dt.Rows[i]["URL"].ToString());
var host = uri.Host.Replace("www.", "");
host = host.Replace(".com", "");
var iconFullUrl = dicrectory + @"\Icons\" +
dt.Rows[i]["IconURL"].ToString();
object[] row = new object[10];
row[0] = "False";
row[1] = Image.FromFile(iconFullUrl);
row[2] = dt.Rows[i]["Title"].ToString();
row[3] = host;
row[4] = Convert.ToDateTime(dt.Rows[i]["Date"].ToString()).ToShortDateString();
row[5] = "";
row[6] = dt.Rows[i]["URL"].ToString();
row[7] = "";
row[8] = "";
row[9] = dt.Rows[i]["Id"].ToString();
dataGrid.Rows.Add(row);
}
}
catch (Exception ex)
{
throw ex;
}
}
在这部分代码中出现错误
row[1] = Image.FromFile(iconFullUrl);
【问题讨论】:
-
根据MSDN 的说法,OutOfMemory 错误可能是由于文件没有有效的图像格式或 GDI+ 不支持文件的像素格式。此外,只要图像未被处理,文件就会被标记为正在使用。
-
是的,谢谢,这就是问题所在,我如何将其标记为答案? :D
-
我会添加作为答案
-
您应该删除该 try/catch 块。除了弄乱您的堆栈跟踪之外,它没有任何作用(看起来异常来自“抛出”的行)。
标签: c# arrays winforms out-of-memory