2009-09-02 7 views
0

Comment éliminer les ressources inutilisées dans l'application C# winform GLOBALLY ??Élimination des ressources inutilisées dans l'application C# winform GLOBALLY

+0

Pourriez-vous nous donner plus de détails sur exactement ce que vous essayez de faire? – LukeH

+0

fermez le programme? –

+0

Je crée une barre des tâches personnalisée comme Windows qui fonctionne bien. Mais quand je ferme l'application, l'espace occupé par la barre des tâches est bloqué. Donc je veux forcer le GC. De l'explication ci-dessous j'ai compris quelques trucs. Mais où l'appeler globalement ?? – Anuya

Répondre

1

Vous pouvez forcer la collecte des ordures en faisant:

GC.Collect(); 
GC.WaitForPendingFinalizers() 

Ceci suppose que vous suivez le modèle IDisposable. Codeproject a tout à fait un detailed article on the IDisposable pattern

+1

forcer une collecte des ordures est rarement la bonne chose à faire; il peut réellement promouvoir la durée de vie des objets dans certaines circonstances ... –

+1

"Ceci est supposé que vous suiviez le modèle' IDisposable' "- les deux ont très peu de connexion ... –

+0

Cette approche ne nécessite pas IDisposable, juste Finalizers. Une implémentation et une utilisation correctes d'IDisposable résoudraient le problème sous-jacent à cette question. –

5

Terminate le processus

+0

Je fais l'hypothèse que l'OP espérait garder les ressources * utilisées * ... –

+5

C'était une réponse stupide à la question, je sais, mais j'ai l'impression que cette question cache un plus grand niveau de pourriture . – spender

2

Eh bien, vous pouvez forcer une collecte des ordures (GC.Collect) *, mais ce n'est pas la même chose que Dispose() - et bien sûr, si votre code peut le voir (pour la jeter), il ne peut pas être collecté. Donc, introduire des modèles supplémentaires pour les suivre vous-même pourrait être contre-productif.

Je suggère simplement de m'assurer que vous faites une utilisation appropriée des blocs using, et assurez-vous que votre code sait ce qui "possède" une ressource IDisposable. Cela devient un peu compliqué avec les stylos/pinceaux/etc, comme le système brosses (etc) doivent être traités différemment de vos propres pinceaux personnalisés.

* = et comme le note Mitch, c'est rarement la bonne chose à faire; Je n'utilise généralement que GC.Collect à partir d'appareils de test pour aplatir les choses entre les cycles de test ... pas dans le code de production.

+1

@Marc: peut-être vaut-il la peine de mentionner que forcer un ramassage des ordures est rarement la bonne chose à faire; il peut effectivement promouvoir la durée de vie des objets dans certaines circonstances ... –

+0

+1, pour répondre au problème derrière la question. –

Questions connexes