Solución:
Después de todo, debe disponer de su instancia de informe. Si desecha el informe después de mostrarlo, nunca volverá a ver el error “Se alcanzó el límite máximo de trabajos de procesamiento de informes configurado por el administrador del sistema”.
Dim report1 As rptBill = clsBill.GetReport(billNumber)
rpt.Print()
'Cleanup the report after that!
rpt.Close()
rpt.Dispose()
Recomendaría mover su código close / dispose / gc.collect fuera de ese proceso de descarga. En otras palabras:
- Informe de carga
- Asignar al control del visor
- Mostrar informe en el control del visor
- Cerrar Viewer Control y descargar (completamente)
- Luego cierre / dispose / gc.collect fuera de cualquier código de control del visor
Supongo que el control del visor no está completamente cerrado cuando se limpia el informe.
Crystal es un proceso que requiere mucha memoria y es muy delicado.
Implementaciones de documentos de Crystal Report IDisposable
interfaz. Entonces, todo lo que tiene que hacer es encerrar la instancia del informe con using
declaración. Se cerrará y desechará automáticamente una vez que using
la declaración está completa. Puedes escribir algo como eso:
using(var report = GetInvoiceReport())
{
// your logic here
}
o (depende de su contexto):
using(var report = new ReportDocument())
{
// your logic here
}