2009-07-20 5 views
6

J'ai une application WinForms 2.0 avec environ 18 rapports créés avec Microsoft ReportViewer. Chaque fois qu'un rapport est démarré, un assembly dynamique est créé (expression_hôte_xxxxxx.dll). Cet assembly dynamique est chargé en mémoire et reste là pour le reste des ressources consommatrices d'exécution de l'application. Même si nous n'avons que 1 rapport et que nous démarrons ceci c'est à dire 3 fois, nous obtenons 3 tels assemblages expression_host en mémoire.Les assemblages Expression_Host continuent d'augmenter en nombre

Y at-il un moyen d'empêcher la création de ces assemblages ou de décharger ces assemblages après que nous ayons terminé?

TIA

Répondre

4

J'ai déjà trouvé une solution. Sur le contrôle ReportViewer vous pouvez signifier pour exécuter le rapport dans un soi-disant application domaine sandbox:

`rpv1.LocalReport.ExecuteReportInSandboxAppDomain();` 

Cela n'empêchera pas la création des ensembles Expression_Host car ceux-ci sont nécessaires pour évaluer les expressions que vous avez utilisés dans votre rapport. Il commencera cependant le rapport dans un nouveau domaine d'application. Ce nouveau domaine d'application est ensuite déchargé une fois le rapport terminé et, par conséquent, tout assembly chargé dans ce domaine est également déchargé.

+0

Ceci est revenu avec un message désapprouvé, d'autres idées? – Neo

Questions connexes