我有一个带有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()
,但它仍然无法正常工作。
有人有解决方案吗?