Type t = Type.GetTypeFromProgID("APPLICATION.COMOBJECT");
o = Activator.CreateInstance(t);
....
int x = o.GetType().InvokeMember("Method1", BindingFlags.InvokeMethod, null, o, args);
String y = o.GetType().InvokeMember("Path", BindingFlags.GetProperty, null, o, null);
上面的代码从另一个应用程序访问自定义COM对象,访问部分工作正常。我能够访问已知和记录的所有方法和属性。但是,当我使用它时,我无法弄清楚如何释放锁定/获取的资源。我正在调用Marshal.FinalReleaseComObject(),将它创建的对象传递给我几乎所有我能想到的但是应用程序进程继续保持活着并且我必须强行杀死它。
在上面的示例中,我在t,o,x和y上调用它...当对象不是COM时,它通常抛出异常,但我捕获该异常并忽略它。