loyung

  博客园 :: 首页 :: 博问 :: 闪存 :: 新随笔 :: 联系 :: 订阅 订阅 :: 管理 ::

大家可能在第一次使用水晶报表时会因为忘记释放资源导致,用上一段时间遇到水晶报表加载错误:已达到系统管理员配置的最大报表处理作业数限制。

一般情况以下两种方法即可解决问题。

1.直接修改注册表

新建一个.REG文件新建一下注册表值


[HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\12.0\Report Application Server\InProcServer]
"PrintJobLimit"="1000"

[HKEY_LOCAL_MACHINE\SOFTWARE\Crystal Decisions\12.0\Report Application Server\Server]
"PrintJobLimit"="1000"

 2.最直接根本的解决办法

在类中创建全局变量

ReportDocument myReport = new ReportDocument();

新增页面关闭事件,释放资源。

    protected void Page_Unload(object sender, EventArgs e)
    {
        myReport.Dispose();
    }

 重点:经过一段时间运行,问题又来了。发现资源释放了,点击报表打印按钮就彻底不行了。

经过对页面生命周期分析后,将ReportDocument资源释放放在Page_Disposed中即可完美解决,不能打印问题。

    protected void Page_Disposed(object sender, EventArgs e)
    {
        myReport.Dispose();
    }

Page_Unload:页面从内存中卸载

Page_Disposed:Page对象从内存中释放掉。这是Page对象生命周期中的最后一个事件

所以明显就可以对比处结果。

posted on 2015-11-17 16:11  loyung  阅读(647)  评论(0编辑  收藏  举报