这是因为你的回调委托作用域问题。在回调时,委托已经被回收了
所谓成员变量:
class test{
public delegate a;
public void foo(){
private delegate b;
}
}
像这种情况,b委托的作用域只在foo()函数里面,如果你让b被非托管代码回调,当foo执行完后,非托管代码回调时很可能b已被回收了。所以出现这个错。
a委托是test类的成员变量,它是可以一直保持的,除非你对test进行了析构。
也可以使用static的变量。
也就是说,尽量扩大你的委托的作用域,保证在回调是它不会被自动回收就行了。