.net对接大华SDK遇到的问题记录
项目场景:
通过后台数据调用大华异步抓图及视频告警监测功能
问题描述:
.net对接大华sdk时,所有用到回调函数的功能会报错“Process terminated. A callback was made on a garbage collected delegate of type ‘NetSDKCS.fMessCallBackEx::Invoke’.”,并且直接导致程序崩溃
原因分析:
通过查找大华官方SDK资料,得知“SDK所有回调都是子线程,JNA是弱引用,建议回调函数对象写成全局静态,防止被系统回收”,即所有回调需要定义为静态全局变量,否则会被系统回收
解决方案:
所有回调需要定义为静态全局变量,否则会被系统回收