Libérer la mémoire utiliser par un GraphManager

Pingouin471 Messages postés 2 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 13 avril 2008 - 13 avril 2008 à 14:54
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 - 13 avril 2008 à 16:28
Bonjour,

J'essaie de programmer un lecteur audio en c# en utilisant QuartzTypeLib.
Tout fonctionne à peu près correctement sauf un petit truc, je m'explique

Je lis un fichier : je recupère les infos du fichier dans le Tag, ensuite je le lis en faisant un new FilgraphManager puis j'applique la méthode Run()

Jusque là tout va bien, je lis au autre fichier : je fais FilgraphManager = null puis je refais comme au dessus pour lire le second fichier.

Et, si je veux relire le premier fichier (je mets le mon GraphManager à null etc) une exception de type System.IO.IOException est levée lorsque je veux lire les Infos Tag (sur l'open du fichier).

Je n'ai pas ce problème si j'utilise GC.Collec() après avoir mis mon FilgraphManager à null, mais j'ai lu qu'il n'était pas conseillé d'utiliser cette méthode...

Donc je viens vers vous, avez-vous une meilleure solution à me proposer ? :)

2 réponses

Pingouin471 Messages postés 2 Date d'inscription vendredi 8 décembre 2000 Statut Membre Dernière intervention 13 avril 2008
13 avril 2008 à 15:24
J'ai trouvé, je vais utiliser la classe Audio du namespace AudioVideoPlayback qui implémente l'interface IDisposable, ainsi je pourrai utiliser la méthode Dispose, merci quand même :p
0
Lutinore Messages postés 3246 Date d'inscription lundi 25 avril 2005 Statut Membre Dernière intervention 27 octobre 2012 42
13 avril 2008 à 16:28
Salut,

Marshal.ReleaseComObject( filterGraph );
filterGraph = null;

Cela dit n'hésite pas à utiliser GC.Collect quand tu manipules des objets COM.
0