Gli oggetti COM di solito hanno una distruzione deterministica: vengono liberati quando viene rilasciato l'ultimo riferimento.C# + COM Interop, rilascio deterministico
Come viene gestito in C# - Interoperabilità COM? Le classi non implementano IDisposable
, quindi non vedo alcun modo per attivare un IUnknown :: Release esplicito.
Un test casuale mostra che gli oggetti COM senza riferimento vengono raccolti pigramente (cioè il garbage collector sta attivando il rilascio). Cosa devo fare per gli oggetti OCM che devono essere rilasciati aggressivamente? (ad esempio, detenere risorse critiche grandi o condivise)?
Problema originale: abbiamo un'applicazione C# che utilizza pesantemente una libreria COM e perde come un matto. Sembra che i problemi siano "tra" il C++ e il codice C# (abbiamo accesso ad entrambi), ma non possiamo individuarlo.
+1, perché questo mi ha salvato la vita più di una volta. – OregonGhost