Как освободить поздние связанные COM-объекты? - PullRequest
0 голосов
/ 03 августа 2009

Полагаю, мне нужно освобождать также COM-объекты с поздней привязкой.
Но как это сделать напрямую?

В моей ситуации я использую следующий код из C # для получения сфокусированной точки из Google Earth (упрощенно):

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

Итак, как мне отпустить камеру и объекты Google Планета Земля в этой ситуации?

1 Ответ

6 голосов
/ 03 августа 2009

Вы можете использовать Marshal.ReleaseComObject

, например

if(Marshal.IsComObject(oGE)==true)
{
  Marshal.ReleaseComObject(oGE);
}
...