J'ai un objet COM hors processus que nous appelons à partir de C# en utilisant dllhost (nous n'avons pas pu utiliser COM +). Cela fonctionne très bien, et j'ai mon propre pool d'objets que je peux utiliser quand je le veux. L'objet COM sera réutilisé plusieurs fois et est en cours d'exécution (> 20 minutes parfois). Malheureusement, il s'agit d'une ancienne DLL ActiveX VB qui se bloque parfois. Donc, je dois être capable de le tuer. J'ai essayé de libérer l'objet COM explicitement et puis la collecte de place d'un autre thread, mais cela ne fait rien. Est-ce que quelqu'un a d'autres idées que d'attraper le PID de Dllhost et de le tuer quand je le lève (probablement pas aussi sûr)? Merci pour l'aide.Tuer un objet COM hors processus à partir de C#
J'ai essayé
System.Runtime.InteropServices.Marshal.ReleaseComObject(m_MyObj);
GC.Collect();
GC.WaitForPendingFinalizers();
m_MyObj = null;
et je crée par
uint hResult = Ole32Methods.CoCreateInstance(ref CalcServerGuid, null, (uint)CLSCTX.CLSCTX_LOCAL_SERVER, ref IID_IUnknown,
out CalcServerInstance);
Peut-être est-ce un signe qu'il est temps de porter cet ancien composant vers .NET? – Kev
Je souhaite. Il faudra des années pour réécrire cela des dizaines d'ingénieurs. :( – Steve