com组件多线程下触发事件的问题

jsc3 2008-07-03 10:42:23
作了个com组件,功能:
启动一个线程从网络上接收数据,然后在这个线程里触发事件

问题:
启动1个实例没有问题,启动多个实例后长时间运行会报错
pDispatch = (LPDISPATCH) m_xEventSetConnPt.GetNextConnection(pos);
ASSERT(pDispatch != NULL); //这里出现错误

pDispatch怎么会为空呢?难道是多线程同步问题引起的?

问题先提出来

我先建个隐藏窗口试试,看有没有问题,大家也帮我诊断一下,多谢
...全文
95 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
jsc3 2008-07-29
  • 打赏
  • 举报
回复
不好意思,忘了揭帖
高山-流水 2008-07-04
  • 打赏
  • 举报
回复
临界变量,的问题
cnzdgs 2008-07-03
  • 打赏
  • 举报
回复
很有可能是多线程冲突,检查一下共享资源的使用。
chnuser 2008-07-03
  • 打赏
  • 举报
回复
不能在多线程里触发事件,可以向组件所在的套间线程发送消息,由组件自己接收消息来触发事件。根本原因在于其他线程使用的组件指针根本就是代理指针


对。再有就是线程线传递COM对象时要用到散集和列集(CoMarshalInterface 和CoUnmarshalInterface)。
jameshooo 2008-07-03
  • 打赏
  • 举报
回复
不能在多线程里触发事件,可以向组件所在的套间线程发送消息,由组件自己接收消息来触发事件。根本原因在于其他线程使用的组件指针根本就是代理指针。
yjgx007 2008-07-03
  • 打赏
  • 举报
回复
m_xEventSetConnPt是多线程共享资源吗?如果是,需要加锁处理.

3,245

社区成员

发帖
与我相关
我的任务
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
  • ATL/ActiveX/COM社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧