C# 调用 C++ DLL 中的委托,引发“对XXX::Invoke类型的已垃圾回收委托进行了回调”错误的解决办法
2013-05-22 11:41
776 查看
C++
C#调用
出现错误: 对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
解决方法:
将委托赋值给类中的成员,再调用此成员
public delegate bool EventCallBack(int index, int type, int param1, int param2); [DllImport(WAPA_DLL, EntryPoint = "WAPA_IPC_SetEventCallBack", CallingConvention = CallingConvention.Cdecl)] public static extern int WAPA_IPC_SetEventCallBack(EventCallBack fEvent);
C#调用
public ctlCamera() { InitializeComponent(); WAPAMethods.WAPA_IPC_Init(WAPAMethods.TVFORMAT.PAL); WAPAMethods.WAPA_IPC_SetEventCallBack(IpcOnEvent); } private bool IpcOnEvent(int index, int type, int param1, int param2) { var status = "未"; switch (type) { case 0: status = "断"; break; case 1: status = "断"; break; case 2: status = "移"; break; case 3: status = "警"; break; } Console.Write(string.Format("索引:{0},类型:{1},参数1:{2},参数2:{3}", index, type, param1, param2)); return true; }
出现错误: 对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
解决方法:
将委托赋值给类中的成员,再调用此成员
private static WAPAMethods.EventCallBack eventCallBack; public ctlCamera() { InitializeComponent(); WAPAMethods.WAPA_IPC_Init(WAPAMethods.TVFORMAT.PAL); eventCallBack = IpcOnEvent; WAPAMethods.WAPA_IPC_SetEventCallBack(eventCallBack); }
相关文章推荐
- 《对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们》的问题的解决方法
- c# “XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
- 【C#】对“xxxx::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用。
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法 续集
- C#传递委托给C或C++库报错__对XXX类型的已垃圾回收委托进行了回调
- 对“XXX::Invoke”类型的已垃圾回收委托进行了回调
- 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们的问题的解决方法
- .net CallBack::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩
- C# 调用C++ DLL 返回类型为字符的接口 出现异常 解决办法
- c# 调用c++ dll文件中的bool类型解决办法
- 对“demo!demo.Index+HookProc::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活
- .net CallbackOnCollectedDelegate 垃圾回收问题。 (Handle::Invoke”类型的已垃圾回收委托进行了回调。)
- C#调用C(C++)dll示例教程,包含dll找不到函数入口的解决办法,包含C#dll调用方式不对出错的解决办法
- 在程序中调用C++链接库中的回调函由于没有考虑生命周期,直接写委托回随机的被gc给回收掉导致报这个错误
- C#调用C++写的Dll时的运行时错误解决
- c#调用c++封装dll 参数为字符串输出函数的解决办法
- VS2010使用C#调用C++编写的dll,在其他电脑上无法运行的解决办法
- C#调用C++写的Dll时的运行时错误解决
- [转]C#调用C++写的Dll时的运行时错误解决
- C#调用C++ Build 写的DLL时,有时会出错,错误为无法加载 DLL "XXX.dll": 找不到指定的模块。(异常来自 HRESULT:0xXXXXXX)。。