报错:
”类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃、损坏和数据丢失。向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。”
解决:
将代码从
public void Hook()
{
// FnHookProc为处理函数
PHook = SetWindowsHookEx(5, FnHookProc, 0, AppDomain.GetCurrentThreadId());
}
改为
internal HOOKPROC PHookProc = null;
public void Hook()
{
// HOOKPROC为委托
PHookProc = new HOOKPROC(FnHookProc);
PHook = SetWindowsHookEx(5, PHookProc, 0, AppDomain.GetCurrentThreadId());
}
PS:
1、创建委托后,再作为参数传递给函数
本文详细介绍了如何解决在托管应用程序中,由于已垃圾回收的委托进行回调而导致的应用程序崩溃、损坏和数据丢失的问题。通过修改代码结构,确保委托在传递给非托管代码前保持活动状态。
2160

被折叠的 条评论
为什么被折叠?



