Les objets COM ont généralement une destruction déterministe: ils sont libérés lorsque la dernière référence est libérée.C# + COM Interop, version déterministe
Comment cela est-il géré dans C# - COM Interop? Les classes n'implémentent pas IDisposable
, donc je ne vois aucun moyen de déclencher un IUnknown :: Release explicite. Un test occasionnel montre que des objets COM non référencés sont collectés paresseusement (c'est-à-dire que le garbage collector déclenche la libération). Que dois-je faire pour les objets OCM qui doivent être libérés agressivement? (par exemple, détenir des ressources critiques importantes ou partagées)?
Problème d'origine: Nous avons une application C# utilisant fortement une bibliothèque COM, et il fuit comme un fou. Il semble que les problèmes soient "entre" le code C++ et le code C# (nous avons accès aux deux), mais nous ne pouvons pas le clouer.
+1, parce que cela m'a sauvé la vie plus d'une fois. – OregonGhost