gpt4 book ai didi

c# - 进行打印预览时是否有限制?

转载 作者:太空宇宙 更新时间:2023-11-03 16:10:53 25 4
gpt4 key购买 nike

我有一个应用程序可以提供打印功能并能够预览该打印件。使用 PrintPreviewDialog 处理打印预览.该应用程序是一个 C# WinForms .Net 4.0 应用程序。

本质上,该功能是打印(预览)多页报告,在这个特定实例中,它正在预览大量图像文件(每页 2 个图像大约 950 个)。

在这种情况下,应用程序在第 462 页抛出错误(因此与总数相差不远),此时以下任务管理器值可用:

  • 内存(PWS):~1.6GB
  • 处理量:~480
  • 用户对象:~300
  • GDI 对象:~1400

我确信内存(尽管很高)不是问题,因为我预计会发生内存不足异常。 GDI 对象有点多,但我不认为这太高(我相信默认限制是 10000?)

显示的实际异常消息总是有用的:

A generic error occurred in GDI+

其他一些需要注意的事情:

  • 这是在客户站点运行的应用程序,因此无法运行调试器
  • 图像首先作为 Image 对象的集合加载到内存中(这解释了高 GDI 对象计数)并且在这个阶段无法更改
  • 我还不确定这是否也是真正打印时的问题,显然没有人愿意浪费所有纸张,但我正在等待打印到 PDF 测试的结果

最后,我的问题是:是否有任何我应该注意的可能导致此行为的限制?例如可能在注册表中设置的 Windows 限制。与打印内存有关的东西?还是不同的 GDI 打印限制?

我是否可以运行任何进一步的测试来帮助诊断原因?

最佳答案

不知道有没有帮助,但可能不是系统限制的情况,而是文件锁。

您提到您正在使用 Image 将文件加载到内存中。 MSDN 说 here :

The file remains locked until the Image is disposed.

然后,如果您的程序试图触及它,GDI+ 就会发疯。

将图像保存到光盘时有时会出现错误,如下所示: Image.Save(..) throws a GDI+ exception because the memory stream is closed

也许尝试使用 FileShare.ReadWrite 选项将图像加载到 MemoryStream 中?

关于c# - 进行打印预览时是否有限制?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17550020/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com