Perte mémoire ReportViewer en local
Bonjour à toutes et à tous,
Je viens vers vous car après avoir essayé plusieurs solutions je n'y arrive toujours pas. L'application est écrite en C# et WPF et utilise Visual Studio 2015.
Voici mon code au lancement de mon application :
Code:
1 2 3 4 5 6 7 8 9 10 11
| reportViewer1.LocalReport.Dispose();
reportViewer1.Reset();
reportViewer1.LocalReport.ReportEmbeddedResource = "PROJET.report.rdlc";
reportViewer1.ProcessingMode = ProcessingMode.Local;
reportViewer1.SetDisplayMode(DisplayMode.PrintLayout);
Microsoft.Reporting.WinForms.ReportDataSource reportDataSourceData = new Microsoft.Reporting.WinForms.ReportDataSource();
reportDataSourceData.Name = "DataSetData";
reportDataSourceData.Value = dsDataGlobal.dtData;
reportViewer1.LocalReport.DataSources.Add(reportDataSourceData); |
Voici le code appelé lors de l'appui sur un bouton :
Code:
1 2 3 4
| private void refreshReportData()
{
reportViewer1.RefreshReport();
} |
J'ai donc rattaché à un reportviewer une DataTable contenue dans un DataSet et je rafraîchis le rapport à l'aide d'un bouton qui appel la fonction resfreshReportData()
Tout fonctionne à merveille, les données s'affichent etc, mais soucis lorsque je clique à plusieurs reprises sur mon bouton, l'occupation mémoire de mon logiciel augmente et ne redescend jamais. J'ai besoin de générer au moins 100 150 rapports de façon récursives et donc à cause de cette fuite mémoire j'arrive à une occupation mémoire du logiciel de l'ordre de 1GO 1,5GO alors qu'à la base l'occupation est d'environ 80MO.
Pourriez-vous m'expliquer comment faire pour relâcher la mémoire occupée une fois le rapport rafraîchit à l'aide du bouton ?
Merci d'avance
John