博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们...
阅读量:4495 次
发布时间:2019-06-08

本文共 1275 字,大约阅读时间需要 4 分钟。

托管调试助手“CallbackOnCollectedDelegate”在“D:\XXX\XXX.vshost.exe”中检测到问题。

其他信息: 对“XXX+HookProc::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。

 

 

 

经过搜索资料,发现出问题的原因是我的程序里回调函数作用域的问题 (_mouseHookCallBack)

 

报错前代码:

private void Ok_Click(object sender, EventArgs e){    HookProc _mouseHookCallBack; // 声明鼠标钩子事件类型    // 安装鼠标钩子    if (_hMouseHook == IntPtr.Zero)    {        // 生成一个HookProc的实例.        _mouseHookCallBack = new HookProc(MouseHookProc);        var mar = LoadLibraryW("user32.dll");        _hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, _mouseHookCallBack, mar, 0);    }}IntPtr _hMouseHook = IntPtr.Zero; // 鼠标钩子句柄       private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam){    ...}

 

 

修改后代码:

private void Ok_Click(object sender, EventArgs e){    // 安装鼠标钩子    if (_hMouseHook == IntPtr.Zero)    {        // 生成一个HookProc的实例.        _mouseHookCallBack = new HookProc(MouseHookProc);        var mar = LoadLibraryW("user32.dll");        _hMouseHook = SetWindowsHookEx(WH_MOUSE_LL, _mouseHookCallBack, mar, 0);    }}HookProc _mouseHookCallBack; // 声明鼠标钩子事件类型IntPtr _hMouseHook = IntPtr.Zero; // 鼠标钩子句柄       private int MouseHookProc(int nCode, Int32 wParam, IntPtr lParam){    ...}

 

 

 

 

 

参考

转载于:https://www.cnblogs.com/code1992/p/11637087.html

你可能感兴趣的文章
【转载】MAC OS开启关闭ftp命令
查看>>
黑马程序员——面向对象编程三大特性
查看>>
文件操作模式
查看>>
运维之扩容与升级
查看>>
如何理解JAVA的跨平台特性
查看>>
V2EX iOS客户端应用源码
查看>>
ASP.NET 页面异步任务
查看>>
(13) openssl ca(签署和自建CA)
查看>>
编译安装git
查看>>
《Linux内核分析》 第三节 构造一个简单的Linux系统MenuOS
查看>>
RPC是什么?
查看>>
CLR via C#:CLR的执行模型
查看>>
JS获取服务器时间
查看>>
如何对数据排序和拆分文件
查看>>
怎样比较、分析两组或者两组以上的数据?
查看>>
数据解析01-15
查看>>
linux 安装mysql数据库——yum安装法
查看>>
Several ports (8005, 80, 8009) required by Tomcat v6.0 Server at localhost are already in use
查看>>
事件监听器
查看>>
解决 libstdc++.so.5: cannot open shared object file: No such file or directory 问题
查看>>