Bonjour à tous,
en ce moment je m'exerce à la programmation DirectShow sous VB.Net.
C'est pas simple. Je n'comprend pas très bien ce que je fais, alors pour l'instant
je suis les tutos sans trop me poser de question. Je lis et j'expérimente.
Toutefois j'ai souvent un message d'erreur qui me laisse perplexe.
Je crée un Graph DirectShow dans lequel j'insère des Filtre DirectShow que je connecte ensuite
entre eux.
J'essai de suivre la consigne qui impose de détruire un objet après utilisation.
Sauf que j'ai souvent le cas ou je dois créer un objet à partir d'une interface d'un objet existant.
Par exemple, j'ai cette instruction pour l'ajout d'un filtre "FiltreX" dans le graph "FilterGraph1" :
objet1 = AddFilterByName(FilterGraph1, FilterCategory.LegacyAmFilterCategory, "FiltreX")
ensuite je dois récupérer une interface de cette objet pour le paramétrer :
objet2 = CType(objet1, InterfaceX)
après paramétrage je détruis l'objet2 comme ceci :
1 2
| Marshal.ReleaseComObject(objet2)
objet2 = Nothing |
Sauf que si ensuite j'essai d'accéder à l'objet1, j'ai ce message d'erreur :
"Impossible d'utiliser un objet COM qui a été séparé de son RCW sous-jacent."
Ce qui me donne l'impression d'avoir détruit l'objet1 en détruisant l'objet2.
Est-ce moi qui m'y prends mal ou est-ce normal ?
Partager