Как освободить COM-объекты с поздней привязкой?
-
10-07-2019 - |
Вопрос
Я предполагаю, что мне действительно придется выпускать также COM-объекты с поздней привязкой.
Но как это делается напрямую?
В моей ситуации я использую следующий код из C #, чтобы получить точку фокусировки из Google Планета Земля (упрощенный):
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 Планета Земля в этой ситуации?
Решение
Вы можете использовать Маршал.Освободите свой объект
например ,
if(Marshal.IsComObject(oGE)==true)
{
Marshal.ReleaseComObject(oGE);
}
Не связан с StackOverflow