问题:
CallbackOnCollectedDelegate
对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
个人理解:gloab_fun在button2_Click函数推出后就会被垃圾回收机制释放掉,因为SetCallback函数为非托管函数,它不会去记录传入的参数(及gloab_fun)的托管信息。
如异常信息提示的这句:
向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
保证gloab_fun不被垃圾回收,把他定义或者声明在全局区就可以。
修改后: