Bonjour à tous,

J'ai un soucis de fuites mémoire dans mon appli C# qui semble lié au fait que je fais appel à une API qui me renvoie une liste d'objets COM.

Ci-dessous un exemple simplifié de mon code :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
 
        public static ReadOnlyCollection<APICOMObject> GetBOObjectsByVolume(int iCounter)
        {
            MyAPIFilter oVolumeFilter = new MyAPIFilter(iCounter);
            ReadOnlyCollection<BusinessObject> _retVal = oVolumeFilter.Apply();
        }
 
            ReadOnlyCollection<APICOMObject> _listeObj;
            for (int icpt = 0; icpt < 1000; icpt++)
            {
                _listeObj = GetBOObjectsByVolume(icpt);
 
                //GC.Collect();
                //GC.WaitForPendingFinalizers();
                //GC.Collect();
            }
A l’exécution, le code ci-dessus consomme de plus en plus de mémoire jusqu'à lever une exception "OutOfMemory". Par contre, si je décommente les lignes GC.*, l'utilisation de la mémoire reste stable.

Du coup, je ne sais pas trop comment gérer mon soucis de manière propre : il ne me semble pas très propre de forcer l'appel au garbage collector.


Merci d'avance...