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