Microsoft ReportViewer是否需要特殊处理才能正确处理?

时间:2015-05-15 05:52:06

标签: c# reportviewer

我花了最后一天跟踪我的代码中似乎是内存泄漏的问题,并且相信我最终确定了罪魁祸首 - 报告生成。为了查看问题所在,我创建了一个空的解决方案,只需一个空白表单上的按钮,链接到此事件:

    private void button1_Click(object sender, EventArgs e)
    { 
        for (int i = 0; i < 10000; i++)
        {
            Microsoft.Reporting.WinForms.ReportViewer temp = new Microsoft.Reporting.WinForms.ReportViewer();
            temp.Dispose();
        }
    }

打开此表单并单击按钮,我看到Windows任务管理器,我可以看到内存开始攀爬,以及USER对象,在几分钟内达到10,000的上限并导致WIN32异常:无法创建句柄。

逐行调试,你可以在创建时看到USER Objects上升了7,然后在Dispose上它只下降了5。

我根据人们遇到的其他问题尝试了temp.LocalReport.ReleaseSandboxAppDomain(),我还尝试了相同的循环,但在报告查看器周围using,看看它是否表现不同 - 它没有& #39;吨

我的问题是,是否有任何关于ReportViewer的特殊处理我不知道?

(仅供参考,我正在使用Microsoft.ReportViewer.WinForms版本10开发.NET Framework 4)

0 个答案:

没有答案