解决:OPC客户端建立异步回调出现的异常

来源:互联网 发布:海洋cms漏洞 编辑:程序博客网 时间:2024/06/08 06:24

因为工作需要接触了OPC通信协议的项目,在开发客户端的时候,写的断开连接的功能块出现了问题。具体来说,是通过CComObject类进行建立异步回调,进而建立与OPC服务器的连接,而在断开服务器的时候,会出现以下报错:


中断程序后,在DEBUG的模式下,程序停在了atlcom.h文件下的virtual ~CComObject() throw()类中的_pAtlModule->Unlock(),在RELEASE模式下,停在了同一个函数中STDMETHOD_(ULONG,Release)上,参看其注释,可以知道因为断开连接的时候,没有正确的释放掉CComObject这类。


图1 DEBUG模式下,程序停止的位置


图2 RELEASE模式下,程序停止的位置


参考了这个贴子C++开发opc客户端,建立异步回调时出现问题,求指导CComObject类实例化成功后的引用计数为零,使用时要增加引用计数AddRef,使用完再减少引用计数 Release。

基于上述的规定,我在建立连接,实例化CComObject并使用完该实例化对象后使用AddRef()函数和FinalConstruct()函数释放了该对象。具体使用参见下面:


以上

原创粉丝点击