是否可以在未知接口上增加RCW引用计数?(即不是底层COM对象的引用计数)
我有一些旧的COM服务器代码
int Method1(object comobject) {
try {
// do something with comobject
return 0;
}
finally {
Marshal.ReleaseComObject(comobject);
}
}
Run Code Online (Sandbox Code Playgroud)
这段代码工作正常,但现在我需要从另一个方法调用它.
int Method2(object comobject) {
int result = Method1(comobject);
// Do something with combject
}
Run Code Online (Sandbox Code Playgroud)
comobject的类型会有所不同(这就是它的对象)
这里是一个方式,RCW数数有多少次的对象已经被封,你可以通过执行附加元帅增加这个数字.
public static T AddRcwRef<T>(T t)
{
IntPtr ptr = Marshal.GetIUnknownForObject(t);
try {
return (T)Marshal.GetObjectForIUnknown(ptr);
}
finally {
Marshal.Release(ptr); // done with the IntPtr
}
}
Run Code Online (Sandbox Code Playgroud)
我不确定我会推荐使用这种方法,尝试摆脱你的ReleaseComObject电话可能更好.
| 归档时间: |
|
| 查看次数: |
1303 次 |
| 最近记录: |