【问题标题】:"System out of memory exception" when try to load images in datagridview (VB Net)尝试在 datagridview (VB Net) 中加载图像时出现“系统内存不足异常”
【发布时间】:2016-04-09 17:26:27
【问题描述】:

我需要在 datagridview (DatagridviewImageColumn) 上加载大约 70-100 个图像,我可以做到,但只加载 33 个,然后我得到:“系统内存不足异常”Memria insuficiente。

图像具有高分辨率 (1600x2700)。我的代码是:

 If FolderBrowserDialog1.ShowDialog = DialogResult.OK Then
     For Each Documento As String In My.Computer.FileSystem.GetFiles(FolderBrowserDialog1.SelectedPath, FileIO.SearchOption.SearchTopLevelOnly)
         *Dim imagen As Image = Image.FromFile(Documento)
          DataGridView1.Rows(a).Cells(0).value = imagen
          a = a + 1
     Next
 End If

错误点与(*)一致

我还尝试了延迟 (Threading.Thread.Sleep(3500)) 和间隔为 3500 的通过计时器,但我仍然得到同样的错误。

我能做什么?

谢谢。

【问题讨论】:

  • Size 属性设置为多少?在错误发生之前填充了多少行?
  • datagridview单元格的宽高为100,填充的行数为33
  • 如果您的应用程序是 32 位的,则它被限制为 1.6 GB 的 RAM。你的图片占用那么多空间吗?
  • 是的,我正在 VS2015 上在 32 位机器上进行开发,图像的大小约为 1.75 mb/张
  • 这仍然没有达到 1.6 GB。你能构建一个 64 位的应用程序吗? - 甚至只是为了检验这个假设。

标签: vb.net datagridviewimagecolumn


【解决方案1】:

我找到了答案。

而不是将图像加载到 datagridview,我只使用了它们的名称并使用 FOR 来处理它们,我使用了 Timer 和以下行:

  GC.Collect()
  GC.WaitForPendingFinalizers()

在每次迭代结束时解决问题。

【讨论】:

    猜你喜欢
    • 2011-06-18
    • 1970-01-01
    • 2011-09-16
    • 1970-01-01
    • 2016-05-21
    • 1970-01-01
    • 2015-02-19
    • 1970-01-01
    相关资源
    最近更新 更多