原文:C# OpenCVSharp使用SetMouseCallback设置回调方法,报错"向非托管代码传递委托时,托管应用程序必须让这些委托保持活动状态,直到确信不会再次调用它们。"

一 描述问题 当非托管代码调用托管应用程序的委托的时候,经常会报错 托管调试助手 CallbackOnCollectedDelegate Message 托管调试助手 CallbackOnCollectedDelegate : 对 OpenCvSharp OpenCvSharp.CvMouseCallback::Invoke 类型的已垃圾回收委托进行了回调。这可能会导致应用程序崩溃 损坏和数据丢失 ...

2019-12-05 14:28 0 352 推荐指数:

查看详情

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

症状描述如下: 如果将一个委托作为函数指针从托管代码封送到非托管代码,并且在对该委托进行垃圾回收后对该函数指针发出了一个回调,则将激活 callbackOnCollectedDelegate 托管调试助手 (MDA)。 原因描述如下: 从其创建函数指针并将创建的函数指针公开给非托管代码委托 ...

Wed Oct 16 20:37:00 CST 2013 1 4997
C#托管代码非托管代码

了解C#.NET应用程序中的托管代码非托管代码 当我们使用VisualStudio并使用任何支持DotNet的编程语言(如 C#、VB 等)在DotNet中创建任何exe(即控制台应用程序、窗口应用程序、类库项目等)或 Web 应用程序(即 ASP.NET MVC、Web API ...

Mon Sep 21 20:51:00 CST 2020 0 1267
c#托管代码非托管代码的理解

理解托管非托管代码的前提之下,要先了解CLR(公共语言运行库) .Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供的服务,类库是它实现的功能. .NET的大部分特性----垃圾收集,版本控制,线程管理等,都使用了CLR提供的服务 ...

Thu Oct 26 05:47:00 CST 2017 3 1967
C#如何直接调用非托管代码

C#如何直接调用非托管代码,通常有2种方法: 1. 直接调用从 DLL 导出的函数。 2. 调用 COM 对象上的接口方法 我主要讨论从dll中导出函数,基本步骤如下: 1.使用 C# 关键字 static 和 extern 声明方法。 2.将 DllImport 属性附加到该方法 ...

Tue Jun 24 00:22:00 CST 2014 0 3015
C#基础知识之托管代码非托管代码

什么是托管代码(managed code)?   托管代码(Managed Code)就是中间语言(IL)代码,在公共语言运行库(CLR)中运行。编译器把代码编译成中间语言,当方法调用时,CLR把具体的方法编译成适合本地计算机运行的机器码,并且将编译好的机器码缓存起来,以备下次调用使用 ...

Fri Jul 12 23:58:00 CST 2019 0 2626
【转,整理】C# 非托管代码

.Net Framework 是由彼此独立又相关的两部分组成:CLR 和 类库, CLR是它为我们提供的服务,类库是它实现的功能..NET的大部分特性----垃圾收集,版本控制,线程管理等,都使用了CLR提供的服务 托管代码 托管代码(Managed Code)实际上就是中间语言(IL ...

Wed Aug 29 18:30:00 CST 2018 1 1152
 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM