使用Crystal Report崩溃应用程序打印多个报表

时间:2015-11-06 15:05:39

标签: c# .net winforms crystal-reports

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

0 个答案:

没有答案