C#中用委托实现C++的回调函数

C++中抓图回调函数

void (CALLBACK* DisplayCBFun)(long nPort,char * pBuf,long nSize,long nWidth,long nHeight,long nStamp,long nType,long nReceaved)); 

C#中定义为委托

public delegate void DisplayCBFun(int nPort, IntPtr pBuf, int nSize, int nWidth, int nHeight, int nStamp, int nType, int nReceaved);

C#中回调函数的实现

public void CB_DisplayCBFun(int nPort, IntPtr pBuf, int nSize, int nWidth, int nHeight, int nStamp, int nType, int nReceaved){ }

由于.Net的垃圾回收机制,因此在这类应用中,对委托进行垃圾回收后,委托再进行回调,将回引发CallbackOnCollectedDelegate异常。因此需要将委托声明为成员变量。

private DisplayCBFun dcbf;
private void Function()
{dcbf = new DisplayCBFun(CB_DisplayCBFun);HikPlayer.PlayM4_SetDisplayCallBack(nPort, dcbf);
}

然而我发现仍然会引发异常,很可能是频繁回调引发的。权威资料显示使用 GC.KeepAlive 来确保特定实例保持活动状态一段时间,能解决此问题。

private DisplayCBFun dcbf;
private void Function()
{dcbf = new DisplayCBFun(CB_DisplayCBFun);HikPlayer.PlayM4_SetDisplayCallBack(nPort, dcbf);//解决方法
    GC.KeepAlive(dcbf);
}

转载自:http://www.cnblogs.com/cyrix/articles/1771491.html 内容.

转载于:https://www.cnblogs.com/tianciliangen/p/3885306.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/473191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

天池 在线编程 回合制游戏(前缀和)

文章目录1. 题目2. 解题1. 题目 QW 是一个回合制游戏的玩家,今天他决定去打怪。 QW 在一场战斗中会碰到 n 个怪物,每个怪物有攻击力 atk[i],每回合结束时如果第 i 个怪物还活着,就会对 QW 造成 atk[i] 的伤害。 QW 只能在每回合…

Python程序员的圣经——《Python编程快速上手:让繁琐工作自动化》尾末附下载地址

一、前言 如今,人们面临的大多数任务都可以通过编写计算机软件来完成。Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。通过Python编程,我们能够解决现实生活中的很多任务。 今天给大家分享一份Python程序员的圣经——《Python编程快…

POJ 3608

1.计算P上y坐标值最小的顶点(称为 yminP )和Q上y坐标值最大的顶点(称为 ymaxQ)。 2.为多边形在 yminP 和 ymaxQ 处构造两条切线 LP 和 LQ 使得他们对应的多边形位于他们的右侧。 此时 LP 和 LQ 拥有不同的方向, 并且 y…

天池 在线编程 聪明的销售(计数+贪心)

文章目录1. 题目2. 解题1. 题目 销售主管的任务是出售一系列的物品,其中每个物品都有一个编号。 由于出售具有相同编号的商品会更容易,所以销售主管决定删除一些物品。 现在她知道她最多能删除多少物品,她想知道最终袋子里最少可以包含多少…

关于计算机书籍的收集与整理(一)

本文来源:https://github.com/pinefor1983/CS-Growing-book 一、程序员技术、管理和认知 1、程序员技术&管理 关于程序员职场晋升,这是我的7点具体建议优秀程序员的7个特点对码农后浪的6点建议程序员百万年薪进阶指南做好技术管理,你必须…

域名状态:运营商设置了客户禁止删除保护?过期域名也不能注册为什么?

有的时候,我们打开一个网站.有的时候打不开.这个时候我们在站长工具里面查询,会有域名状态:运营商设置了客户禁止删除保护信息.这个状态对客户来说还是比较好的,以免客户一不小心把域名删了。域名过期后会依次经过以下几个阶段后才可以注册的&#xff1a…

天池 在线编程 放小球(动态规划)

文章目录1. 题目2. 解题2.1 动态规划1. 题目 n 个桶中小球的个数已知, 可以操作 k 次(每次从桶中取出一个球,或者添加一个球), 每个桶有规定的最大容量 W[i]。 求操作后两相邻桶之间的最大差值的平方的最小值。 n < 100 W[i] < 100样例 1: 输入: 5 6 [1,2,3,4,5] [15,…

关于计算机书籍的收集与整理(二)

本文来源&#xff1a;https://github.com/justjavac/free-programming-books-zh_CN#%E7%9B%AE%E5%BD%95 国外程序员在 stackoverflow 推荐的程序员必读书籍&#xff0c;中文版。stackoverflow 上的程序员应该阅读的非编程类书籍有哪些&#xff1f; 中文版github 上的一个流行的…

LeetCode 1716. 计算力扣银行的钱(等差数列)

文章目录1. 题目2. 解题1. 题目 Hercy 想要为购买第一辆车存钱。他 每天 都往力扣银行里存钱。 最开始&#xff0c;他在周一的时候存入 1 块钱。 从周二到周日&#xff0c;他每天都比前一天多存入 1 块钱。 在接下来每一个周一&#xff0c;他都会比 前一个周一 多存入 1 块钱…

互联网产品 从设计到运营 这中间提高须要关注的站点

互联网产品 从设计到运营 这中间提高须要关注的站点 https://github.com/edagarli/resourcecollects 转载于:https://www.cnblogs.com/mengfanrong/p/3897858.html

整理与总结Python关于对文件的操作

一、前言 python中对文件、文件夹&#xff08;文件操作函数&#xff09;的操作需要涉及到os模块和shutil模块 二、操作命令 得到当前工作目录&#xff0c;即当前Python脚本工作的目录路径: os.getcwd() 返回指定目录下的所有文件和目录名:os.listdir() 函数用来删除一个文…

LeetCode 1717. 删除子字符串的最大得分

文章目录1. 题目2. 解题374 / 1631&#xff0c;前22.9%1215 / 7873&#xff0c;前15.4%1. 题目 给你一个字符串 s 和两个整数 x 和 y 。你可以执行下面两种操作任意次。 删除子字符串 "ab" 并得到 x 分。 比方说&#xff0c;从 “cabxbae” 删除 ab &#xff0c;得…

利用Python把四张图片按照顺序拼接起来

一、需求&#xff1a; 给出四张图片&#xff0c;按照一定的顺序拼接起来 二、图片&#xff1a; 左上角&#xff1a;&#xff08;像素512*512&#xff09; 右上角&#xff1a;&#xff08;像素284*512&#xff09; 左下角&#xff1a;&#xff08;像素284*512&#xff09; 右…

证券总结

1.暴涨之后&#xff0c;如果没有阳线助涨&#xff0c;则可能跌&#xff0c;也可能震荡&#xff0c;看下一个交易日的状况定夺;暴跌类似。 2.持续小规模阳线&#xff0c;最后稍大阳线&#xff0c;但非暴涨。此时如果下一交易日阴线极有可能是短暂小幅回调&#xff0c;莫做空&…

Linux:文件创建时间如何修改?

一、需求 修改文件创建时间 二、知识及方法步骤 touch命令用于创建空白文件或修改文件时间。 在Linux系统中一个文件有三种时间&#xff1a; 更改内容的时间 - mtime&#xff1a;当文件进行被写的时候&#xff0c;CTime就会更新更改权限的时间 - ctime&#xff1a;当文件的…

面向对象学习笔记

abstract:抽象类或方法的关键字注意事项&#xff1a;一个类中至少有一个抽象方法不允许有大括号主要意义就是规范方法&#xff0c;要求必须按照抽象中的方法来写继承抽象类的类&#xff0c;必须重载完全抽象类的方法抽象类是不能被实例化的&#xff0c;因为本身没有意义 extend…

小案例:编写立方体六个面,合成一张全景图后端

一、需求&#xff1a; 给出立方体六个面&#xff0c;合成一张全景图 二、主要知识&#xff1a;py360convert 2.1、该项目的特点&#xff1a; 立方体贴图和等矩形之间的转换 等角于平面 纯python实现&#xff0c;仅依赖于numpy和scipy矢量化实施&#xff08;在大多数地…

LeetCode 1721. 交换链表中的节点(快慢指针)

文章目录1. 题目2. 解题1. 题目 给你链表的头节点 head 和一个整数 k 。 交换 链表正数第 k 个节点和倒数第 k 个节点的值后&#xff0c;返回链表的头节点&#xff08;链表 从 1 开始索引&#xff09;。 示例 1&#xff1a; 输入&#xff1a;head [1,2,3,4,5], k 2 输出&am…

[Python] NotImplemented 和 NotImplementedError 区别

NotImplemented 是一个非异常对象&#xff0c;NotImplementedError 是一个异常对象。 >>> NotImplemented NotImplemented >>> NotImplementedError <type exceptions.NotImplementedError>>>> type(NotImplemented) <type NotImplemented…

爬虫小案例:基于Bing关键词批量下载图片

一、需求&#xff1a; 基于Bing网站&#xff0c;输入关键词&#xff0c;批量下载图片保存到本地 二、演示&#xff1a; 三、直接上代码 import os import urllib.request import urllib.parse from bs4 import BeautifulSoup import re import time# 设置请求头 header {Us…