Pergunta

Eu acho que tem que liberar também objetos COM tarde encadernados.
Mas como isso é feito diretamente?

Na minha situação eu uso o seguinte código C # para obter o ponto focado de Google Earth (simplificado):

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);

Assim como eu libero a câmera e Google Earth objetos nesta situação?

Foi útil?

Solução

Você pode usar Marshal.ReleaseComObject

por exemplo.

if(Marshal.IsComObject(oGE)==true)
{
  Marshal.ReleaseComObject(oGE);
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top