首先非常感谢下面几篇文章:

http://groups.yahoo.com/neo/groups/wtl/conversations/topics/16493

http://lang.9sssd.com/awtl/art/480

http://www.codewiz51.com/wiki/ATL-Threading-passing-a-SAFEARRAY-when-raising-an-event.ashx(包含例子下载地址:)

准备工作:

首先你得为你的组件添加了连接点事件。需要修改的文件包括:

(1) TaskManagerCOM_ATL.idl:

添加如下代码:

importlib("stdole2.tlb");[uuid(BABA3626-072D-4411-B054-4661EB09847B),helpstring("_ITaskManagerEvents Interface")]dispinterface _ITaskManagerEvents{properties:methods:[id(1),helpstring("method sendMessage_to_Client")] HRESULT sendMessage_to_Client([in] int message_id,[in] BSTR file_name,[in] int m_process);};

(2)在类视图中,编译你的  _ITaskManagerEvents ,添加模板库。

(2)在类视图中利用向导为该该组件的 添加  ”连接点实现“

这里应该为     "_ITaskManagerEvents"

(4)步骤4,这是你会发现你的 头文件中多了一个   _ITaskManagerEvents_CP.h,同时在你的组件类上添加了

public CProxy_ITaskManagerEvents<CTaskManager>,

public IConnectionPointContainerImpl<CTaskManager>,

COM_INTERFACE_ENTRY_IMPL(IConnectionPointContainer)等代码。

前面的这几个步骤就是向导给我目前提供的代码,在实现完前面的步骤后,你会发现你的COM组件的主线程调用,已经可以调用_ITaskManagerEvents_CP.h中的Fire_sendMessage_to_Client(你的函数可能有所不同)函数了。 当前面的步骤没有什么问题后,接下来就是修改几个点以是它能在多线程环境里面运行的步骤。

下面是实现的步骤:

(1)将ATLCPImplMT.h复制到你的项目文件当中。

(2)修改 _ITaskManagerEvents_CP.h中的

template<class T>    
class CProxy_IXXXEvents :     
 public IConnectionPointImpl<T, &__uuidof(_IXXXEvents)>

template<class T>
class CProxy_ITaskManagerEvents :public IConnectionPointImplMT<T, &__uuidof(_ITaskManagerEvents)>

修改:

     pThis->Lock();CComPtr<IUnknown> punkConnection = m_vec.GetAt(iConnection);pThis->Unlock();
     IDispatch * pConnection = static_cast<IDispatch *>(punkConnection.p);

     CComPtr<IUnknown> punkConnection;punkConnection.Attach (GetInterfaceAt(iConnection));CComQIPtr<IDispatch> pConnection(punkConnection);

(3)在你的调用线程中,记着要在线程开始和结束时初始化和卸载com库,调用CoInitializeEx(NULL, COINIT_MULTITHREADED);和CoUninitialize();函数;现在可以在其他线程中调用触发函数Fire_XXX函数了!

谨以此文记录我的ATL COM组件的学习之路--多线程情况下,连接点的使用方法。相关推荐

  1. 谨以此文纪念我长达半年的Java自学之路(已拿offer)

    一.背景 20届毕业的双非普通本科,去年考研错过秋招,年初又遇到了疫情没参加春招(惨绝人寰),六月份回学校答辩,草草毕业之后开始了艰难的找工作之旅. 我大学学的专业是信息与计算科学,听这个专业名字是不 ...

  2. 谨以此文纪念2019年3月春招

    谨以此文纪念2019年3月春招 简历情况 本科大三,5%. 计算机视觉深度学习项目2个(一大一小),大项目论文投了<计算机应用>. 浙江省"新苗"科技创新项目立项,绍兴 ...

  3. 谨以此文纪念2019年春招

    谨以此文纪念2019年春招 前言 整个三四月,一直在背知识点,感觉好多内容没有复习到位. 每天刷着leetcode和ZOJ,逛着牛客网看又有哪家开始面试,每天的心情就像一个"W". ...

  4. 三年,也只是一瞬间,谨以此文纪念我在大学的岁月

    感想:写在前面 从我第一次接触CSDN到现在已经有快接近三年了,依稀记得当初帅气的室友推荐我写写博客记录学习生涯,后来便喜欢上了写作,也不是为了给谁看,也不是为了收获多少粉丝,更不是为了盈利(说实话, ...

  5. 谨以此文祭奠我逝去的文件们~~~

    前天实验室的哥们要装系统,让我给他做个 U盘系统,而他的8G内存很明显需要64位的系统,我就说好吧,反正就是一个cat 命令(<细数Linux下制作U盘系统启动盘的方法!>). 在电脑上找 ...

  6. 霍金去世,巨星陨落!谨以此文缅怀霍金

    据BBC.英国天空新闻等多家媒体,史蒂芬·霍金去世,享年76岁.作为现代最伟大的物理学家之一,他与罗杰·彭罗斯共同合作提出在广义相对论框架内的彭罗斯–霍金奇性定理,并提出霍金辐射理论,为现代物理学发展 ...

  7. __FILE__, __FUNCTION__, __LINE__学习篇,谨以此文告别那无知的岁月

    printf("\n%s,%s,%d\n", __FILE__, __FUNCTION__, __LINE__); 经常会在代码中看到类似于上面的log, 虽然一直很好奇__FIL ...

  8. 谨以此文,献给我的大学四年—双非本科到双一流985的成长之路

    谨以此文,献给我的大学四年-双非本科到双一流985的成长之路 天才白痴梦 谨以此文,献给我的大学四年-双非本科到双一流985的成长之路 大一时光 大二时光 大三时光(高光时刻) 大四时光 随感 我承认 ...

  9. 此文记录了我从研二下学期到研三上学期的找工历程,包括百度、腾讯、网易、移动、电信、华为、中兴、IBM八家企业的面试总结和心得--转...

    感谢电子通讯工程的研究生学长为大家整理了这么全面的求职总结,希望进入通信公司和互联网公司做非技术类岗位的学弟学妹们千万不要错过哦~ ---------------------------原文分割线-- ...

  10. 谨以此文献给才毕业一两年的朋友(出自一个网友的文章)

    谨以此文献给才毕业一两年的朋友 ([color=blue]选自同事信件[/color]) 谨以此文献给才毕业一两年的朋友 我们终于进入了这个社会.从此结束了被学校老师看管的生涯,结束了做父母乖宝贝的日 ...

最新文章

  1. anaconda tensorflow 2.3_TensorFlow 速成 | 统计师的Python日记 第13天
  2. java servlet .net_JAVA学习之 Model2中的Servlet与.NET一般处理程序傻傻分不清楚
  3. 从Vue.js源码中我学到的几个实用函数
  4. 2-1 gradle安装
  5. java学习(10):数据类型
  6. css毛玻璃效果白边_css3毛玻璃效果白边问题_html/css_WEB-ITnose
  7. Python爬虫中最重要、最常见、一定要熟练掌握的库
  8. iOS ijkplayer 硬解H265(hevc)4k视频问题解决
  9. 老弟教你用CSS和JS实现曾经风靡一时的微信打飞机游戏
  10. vmware tools选项灰色解决办法(ubuntu 14.04)
  11. 亚马逊成功的四个关键因素
  12. 分享盘点9个可免费使用的网站CDN加速服务
  13. JBE与JLE的区别
  14. 阿里云数据库ClickHouse核心技术解析
  15. js如何保留两位小数
  16. Flex移动皮肤-第一部分:增强的皮肤功能基础
  17. Windows Server 2016 ServU-v6.30
  18. [C++]Inside C++对象模型:第三、四、五章笔记
  19. .NET经典图书推荐(下)
  20. 一周AI资讯|如果深度学习成为“侦探”,会发生什么?

热门文章

  1. 电影票预订购票系统搭建(API对接模块)
  2. Java 性能分析工具 , 第 2 部分:Java 内置监控工具
  3. ExtJs4.1:结合现有Laz例程生成酷Grid页面
  4. 当5G 遇上智慧农业 多链路5G+WiFi6的组网方案
  5. 一文带你了解NTLM Realy 攻击
  6. python cx_oracle 安装_Python 离线安装cx_Oracle
  7. 算法专辑0:脑筋急转弯
  8. 自学5个月Java找到了9K的工作,我的方式值得大家借鉴 第一部分
  9. 国产工具系统型号表示方法
  10. python长方形图片_如何使用Python在图像中裁剪矩形形状