Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/325.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# RDLC呈现系统.OutOfMemoryException_C#_Export To Excel_Rdlc_Reportviewer - Fatal编程技术网

C# RDLC呈现系统.OutOfMemoryException

C# RDLC呈现系统.OutOfMemoryException,c#,export-to-excel,rdlc,reportviewer,C#,Export To Excel,Rdlc,Reportviewer,我正在尝试使用RDLC呈现在Excel中自动导出生成的报告。下面的代码是在一个计时器内,计时器将检查数据库上是否有请求,它将仅从数据库中获取1个请求的报告。 我重复了很多次这个过程(我认为在错误发生之前已经重复了10次),但是LocalProcessingException发生在内部异常System.OutOfMemoryException中(请参阅下面的代码)。我使用GC.Collect,但它没有帮助 try { using (ReportViewer ReportViewerCont

我正在尝试使用RDLC呈现在Excel中自动导出生成的报告。下面的代码是在一个计时器内,计时器将检查数据库上是否有请求,它将仅从数据库中获取1个请求的报告。 我重复了很多次这个过程(我认为在错误发生之前已经重复了10次),但是LocalProcessingException发生在内部异常System.OutOfMemoryException中(请参阅下面的代码)。我使用GC.Collect,但它没有帮助

try
{
    using (ReportViewer ReportViewerControl = new ReportViewer())
    {
        ReportViewerControl.LocalReport.ReportPath = "myrdlcpath";
        ReportViewerControl.LocalReport.DataSources.Clear();
        ReportViewerControl.LocalReport.DataSources.Add(ReportSource);
        ReportViewerControl.LocalReport.DisplayName = "mydisplayname";
        ReportViewerControl.LocalReport.SetParameters(MyReportParameters);
        ReportViewerControl.LocalReport.Refresh();

        File.WriteAllBytes(
            "MyreportFileName.xlsx",
            ReportViewerControl.LocalReport.Render( //LocalProcessingException here having inner exception System.OutOfMemoryException
                "EXCELOPENXML",
                null,
                out mimeType,
                out encoding,
                out extension,
                out streamids,
                out warnings));

        ReportViewerControl.LocalReport.DataSources.Clear();
        ReportViewerControl.Clear();
}
}
catch(LocalProcessingException ex)
{
    GC.Collect();
    using (ReportViewer ReportViewerControl = new ReportViewer())
    {
        ReportViewerControl.LocalReport.ReportPath = "myrdlcpath";
        ReportViewerControl.LocalReport.DataSources.Clear();
        ReportViewerControl.LocalReport.DataSources.Add(ReportSource);
        ReportViewerControl.LocalReport.DisplayName = "mydisplayname";
        ReportViewerControl.LocalReport.SetParameters(MyReportParameters);
        ReportViewerControl.LocalReport.Refresh();

        File.WriteAllBytes(
            "MyreportFileName.xlsx",
            ReportViewerControl.LocalReport.Render(
                "EXCELOPENXML",
                null,
                out mimeType,
                out encoding,
                out extension,
                out streamids,
                out warnings));

        ReportViewerControl.LocalReport.DataSources.Clear();
        ReportViewerControl.Clear();
    }
}
ReportSource.Value = null;