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 :
Voici le code appelé lors de l'appui sur un bouton :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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);
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()
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4 private void refreshReportData() { reportViewer1.RefreshReport(); }
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
Partager