委托,事件和回调函数这3者之间到底是什么关

2025-06-28 22:15:59
推荐回答(1个)
回答1:

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