2011-09-01 99 views
0

我正在研究VB.Net WinForms应用程序。这个应用程序显示生产线的行,用户将逐行下去并打印一个ActiveReports文档包。该软件包最多可以包含9个报告。封装选择,并告诉打印,然后它被直接使用的ActiveReports'机制发送到机器的默认打印机:通用GDI +异常后跟OutOfMemory异常

rpt.Document.Print(False, False, True) 

这些报告也使用图片来自文件系统中拔出。当他们通过行快速运行,他们有时会遇到:

A generic error ocurred in GDI+ 

然后依次为:

Exception of type "System.OutOfMemoryException" was thrown. 

这将导致某些文件无法打印,他们必须回去,并找出哪些没”打印。我知道机器没有内存不足,因此我的假设是打印机内存已满,或者打印时报告尝试使用相同的图像,并导致出现问题。

如果打印机内存已满,有什么办法可以减慢向打印队列添加文档,或者至少暂停等待空间?我有点不知所措,并希望有任何建议。

谢谢。

+1

请与供应商联系以获得支持。 –

+0

我也向他们发送了支持电子邮件,并且仍在等待回复。我将尝试睡眠包之间的线程,以查看是否可能会等待某些打印机内存清除。我也在考虑将报告保存为PDF,然后将它们发送到打印机。我可以使用Adobe SDK将PDF从文件直接发送到打印机吗? –

+0

您能否为“GDI +中发生的通用错误”错误提供一个调用堆栈?这将有助于隔离问题。 –

回答

1

我决定只使用ActiveReports内置的缓存功能。这似乎减轻了打印机的一些问题。我还添加了一些减慢线程的操作,以确保在将更多文档添加到打印队列之前清除内存。谢谢。