【发布时间】:2016-02-07 18:33:00
【问题描述】:
我有一个带有 Crystal Reports (13.0.15) 的 WinForms 应用程序(.net 4.0、x86)。我想使用 Crystal Reports 打印多个文档(而不是在报表查看器上看到它们 - 直接在打印机上)。
foreach (var document in documents )
{
ReportDocument report=GenerateReport(document.id);
report.PrintToPrinter(printerSettings, pageSettings, false);
}
每次打印 48 份报告时,在第 49 次打印时出现异常 System.ComponentModel.Win32Exception The handle is invalid Void OnStartPrint(System.Drawing.Printing.PrintDocument, System.Drawing.Printing.PrintEventArgs)
我尝试了另一组文档,但 49 打印仍然有异常。
我尝试将 PrintJobLimit 更改为 9000 以上,但没有帮助。
接下来我尝试在打印后处理报告:
foreach (var document in documents )
{
using (ReportDocument report=GenerateReport(document.id))
{
report.PrintToPrinter(printerSettings, pageSettings, false);
}
}
但现在程序在打印第 28 个报告之前崩溃,我无法捕获异常(程序停止工作)。只有在事件查看器中是有关应用程序错误 (Faulting module name: ntdll.dll) 的信息。
我尝试了不同的东西(以及它们的组合):
report.Close();
report.Dispose();
report=null;
即使在打印后GC.Collect(),但它仍然无法正常工作。
有人有解决办法吗?
【问题讨论】:
标签: c# .net winforms crystal-reports