Come rilasciare oggetti COM associati in ritardo?
-
10-07-2019 - |
Domanda
Suppongo di dover rilasciare anche oggetti COM associati in ritardo.
Ma come si fa direttamente?
Nella mia situazione utilizzo il seguente codice da C # per ottenere il punto attivo da Google Earth (semplificato):
Type oClassType = Type.GetTypeFromProgID("GoogleEarth.ApplicationGE");
object oGE = Activator.CreateInstance(oClassType);
object oCamera = oGE.GetType().InvokeMember("GetCamera", System.Reflection.BindingFlags.InvokeMethod, null, oGE, new object[] { 0 });
double dFocusLatitude = (double)oCamera.GetType().InvokeMember("FocusPointLatitude", System.Reflection.BindingFlags.GetProperty, null, oCamera, null);
double dFocusLongitude = (double)oCamera.GetType().InvokeMember("FocusPointLongitude", System.Reflection.BindingFlags.GetProperty, null, oCamera, null);
Quindi, come posso rilasciare la fotocamera e gli oggetti di Google Earth in questa situazione?
Soluzione
Puoi utilizzare Marshal.ReleaseComObject
per es.
if(Marshal.IsComObject(oGE)==true)
{
Marshal.ReleaseComObject(oGE);
}
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow