使用委托将函数放在主线程调用。

我是用C# winform做的界面程序!!
2024-12-15 03:04:10
推荐回答(1个)
回答1:

这是因为你的回调委托作用域问题。在回调时,委托已经被回收了
所谓成员变量:
class test{
public delegate a;
public void foo(){
private delegate b;
}
}

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