社区
C#
帖子详情
求问CallbackOnCollectedDelegate问题
Crystalzhou
2009-11-27 05:17:42
检测到 CallbackOnCollectedDelegate
Message: 对“System.Windows.Forms!System.Windows.Forms.NativeMethods+WndProc::Invoke”
类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,
托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
...全文
345
10
打赏
收藏
求问CallbackOnCollectedDelegate问题
检测到 CallbackOnCollectedDelegate Message: 对“System.Windows.Forms!System.Windows.Forms.NativeMethods+WndProc::Invoke” 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时, 托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
10 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
yjcwin
2012-07-12
打赏
举报
回复
7楼正解,谢谢
paopao_426
2011-04-07
打赏
举报
回复
如果非托管代码需要多次调用托管代码中的回调,请将委托的引用保存为成员变量。否则会出现类似下面的异常:
检测到 CallbackOnCollectedDelegate
Message: 对“Demo!SomeNamespace.SomeClass+SomeDelegate::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
如果不用成员变量,而用局部变量引用被new出来的委托,那么非托管代码可能刚开始的几次回调是OK的,但是接下来就会出现上面所说的异常,原因就在于GC将局部变量和局部变量引用的委托对象都销毁了,非托管代码再去访问那个函数指针时发现指针指向的地址已经无效。
参考CSDN博客,出处:http://blog.csdn.net/Adi_liu/archive/2009/04/13/4069330.aspx
Crystalzhou
2009-11-30
打赏
举报
回复
[Quote=引用 7 楼 wartim 的回复:]
传给非托管代码时, 委托定义成全局,不要定义在方法里
[/Quote]
我没有使用委托
wartim
2009-11-30
打赏
举报
回复
传给非托管代码时, 委托定义成全局,不要定义在方法里
gomoku
2009-11-30
打赏
举报
回复
[Quote=引用楼主 crystalzhou 的回复:]
...(某某某对)已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。
[/Quote]
错误信息不是已经讲得非常清楚了?
Crystalzhou
2009-11-30
打赏
举报
回复
继续UP
hitlcyu19
2009-11-30
打赏
举报
回复
http://www.cnblogs.com/fourleg/archive/2009/06/06/1497749.html
Crystalzhou
2009-11-30
打赏
举报
回复
偌大的C#区,没有人遇到过吗
superlxl
2009-11-29
打赏
举报
回复
没人?
Crystalzhou
2009-11-29
打赏
举报
回复
没有人遇到过吗
C#实现扫描枪扫描二维码并打印(实例代码)
1.使用usb口输入的扫描枪,这里实现使用了winform 首先创建一个CS文件 using System; using System.Coll
ect
ions.Generic; using System.Linq; using System.Refl
ect
ion; using System.Runtime.InteropServices; using System.Text; namespace am_sign { class BardCodeHooK { public
delegate
void BardCod
eD
eletegate(BarCodes barCode); pub
记C#调用dll开发出现
Callback
OnColl
ect
ed
Delegate
的
问题
一个C#回调出现
Callback
OnColl
ect
ed
Delegate
的
问题
net
Callback
OnColl
ect
ed
Delegate
垃圾回收
问题
Handle Invoke 类型的
net
Callback
OnColl
ect
ed
Delegate
垃圾回收
问题
Handle Invoke 类型的
Callback
OnColl
ect
ed
Delegate
问题
处理
private void StartMouseHook() { Win32Api.HookProc mouseHookProc
ed
ure = new Win32Api.HookProc(MouseHookProc); m_hMouseHook = Win32Api.SetWindowsHookEx(WH_MOUSE_LL, mou...
.net
Callback
OnColl
ect
ed
Delegate
垃圾回收
问题
。
错误信息: 对“XXX::Invoke”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。 最近在写一段程序,一开始运行正常,但执行几次后就抛出错误信息。。插了MSDN, 解决办法是把委托赋值给类的成员; 例如: 原来的委托: pub...
C#
111,120
社区成员
642,545
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章