【问题标题】:System.OutOfMemoryException is coming while using BackgroundWorker class使用 BackgroundWorker 类时出现 System.OutOfMemoryException
【发布时间】:2015-03-13 12:00:40
【问题描述】:

我正在使用后台工作程序来更新 datagridview 控件中的行。当我填充行时,我在 16,00,000 行之后得到 System.OutOfMemoryException。为什么会来? 这个异常通常什么时候出现?

谁能建议我如何解决这个问题?

【问题讨论】:

  • 一千六百万???也许应该考虑使用分页...
  • 请参阅this pageRemarks 部分了解常见原因。显然你的行太多了。
  • 此异常通常发生在系统内存不足时,如异常所示。
  • blog.codinghorror.com/the-end-of-pagination 绝对没有合理的理由向最终用户显示 1600 万行。他们永远不会读到它。为您的听众编写代码。
  • 缩小行数

标签: c# datagridview out-of-memory backgroundworker


【解决方案1】:

如果需要处理 160 万行,则需要批量处理。你不能一下子把它们全部记在内存中。尤其是使用用户控件会增加显示这些行的大量开销。

看看你有多少可以放入你的 RAM。不要将它们放在用户控件中。以您的数据库可以处理的最佳大小批量处理它们(根据我的经验,批量/批处理中的行从 1K 到 10K 行)。

【讨论】:

    猜你喜欢
    • 2011-04-24
    • 2018-06-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-09-30
    • 1970-01-01
    • 2020-08-14
    相关资源
    最近更新 更多