应该是delPtr 被垃圾收集了吧。GCHandle gch = GCHandle.Alloc(delPtr);
GC.Collect();
bool tcb = EnableCallback(delPtr);
gch.Free(); //这句必须在确定C/C++不再调用delPtr后才能调用。建议将delPtr变成static的。这样最简单了。
GC.Collect();
bool tcb = EnableCallback(delPtr);
gch.Free(); //这句必须在确定C/C++不再调用delPtr后才能调用。建议将delPtr变成static的。这样最简单了。
只是有一点,不知道怎样将delPtr变成static, 如果用static PtrNotify delPtr通不过编译。不过,delPtr是否static似无关紧要,不是大问题。
PtrNotify delPtr = new PtrNotify(NotifyProcedure);
这句挪到函数外面,成为成员变量即可。
当然了。你定义写函数外,使用时检查一下。
PtrNotify delPtr = null;
public void someFunc()
{
if(delPtr==null)delPtr = new PtrNotify(NotifyProcedure);
bool tcb = EnableCallback(delPtr);
}