COM连接点在多线程中使用的注意事项
来源:互联网 发布:sql readuncommitted 编辑:程序博客网 时间:2024/05/20 09:23
用vc 写了个支持连接点的COM程序(dll),该COM程序为多线程,其中一个工作线程在任务完成后会通过连接点发送事件实现回调。关于如何写支持连接点的COM程序,请参考vc知识库的杨老师专栏的这篇文章:http://www.vckbase.com/document/viewdoc/?id=1538,杨老师关于COM开发与应用的文章都很不错,值得一看!
该COM dll写好后,用vb程序调用,并写好事件回调的函数:
结果在运行时总是抛异常,回调函数不能正常被调用。后来google才知道这是多线程的问题,微软曾针对这个问题专门提供了解决方案,请看这篇文章:http://support.microsoft.com/kb/280512。在写COM代码时,将IDE自己生成的连接点基类中的IConnectionPointImpl改为IConnectionPointImplMT(定义在微软提供的头文件ATLCPImplMT.h中),并按文章所述修改相关代码。特别要注意的是在工作线程(执行回调函数的线程)中初始化COM时一定要调用CoInitializeEx(NULL, COINIT_MULTITHREADED),否则回调函数还是无法正确执行的。修改后,vb中的objCom_OperationDone就能被正确调用了。
注意:要VB调用时才需要这么改,如果在VC中调用,这么修改反而会出现异常。如果是供C#调用,改与不改都能正常调用。
- COM连接点在多线程中使用的注意事项
- COM连接点C++客户使用注意事项
- COM 使用多线程发送连接点事件的实现
- COM 多线程连接点调用
- MasterPage中使用的几点注意事项
- 多线程中使用Com
- 关于在oracle中是使用索引的几点注意事项
- 使用COM、OLE的注意事项
- COM组件的使用注意事项
- 在vb中使用vss的注意事项
- 在div中使用innerHTML的注意事项
- 在sqlserver中使用事务的注意事项
- 在GAE中使用Struts2的注意事项
- static 在函数中使用的注意事项
- 在vs2005中使用Com连接SAP系统-Form方式
- 在vs2005中使用Com连接SAP系统-Web方式
- 在vs2005中使用Com连接SAP系统(一)
- 在vs2005中使用Com连接SAP系统(二)
- C#学习心得
- 如何调用DLL (基于Visual C++6.0的DLL编程实现)
- 设计模式学习笔记 - 2010/10/10
- 网络摄像机
- FileLoad 直接显示到img标签中 实现预览效果
- COM连接点在多线程中使用的注意事项
- Hibernate映射导致的几个异常
- SQL Server分页3种方案比拼
- Fiddler2
- SQL2005 如何在没有日志文件的情况下如何恢复MDF数据库文件
- ASP.NET初学笔记:FileUpload控件
- awk
- 微软官方提供500M支持ASP.NET免费空间
- windows 下VLC播放器应用之一----VLC-1.1.4的编译