我完全按照标准的方法写了一个 ATL COM 部件,并用向导产生了连接点,然后由 VB 来调用这个 COM 部件,并且在 VB 中写了相应的事件处理函数。在 VB 调式环境中运行一切正常,事件能够正常触发,但是当将 VB 程序编译成可执行文件后,老是出内存操作错误,经过跟踪后发现问题出在触发事件的那句代码上,不知道是什么原因,望大挟指点一二。注:在这个 COM 部件中的事件是有一个我自己写的工作线程中调用的
AfxBeginThread(_DownLoad,this);
AfxBeginThread(_DownLoad,this);
解决方案 »
- 怎么使用detour 才能HOOK到c++builder调用的函数
- 跪求答案,在线等待:vs2005调试出错,如下,怎么解决?error C2440: ... ...
- 天通苑排号成功,散分!
- VC制作的COM组件,编译成DLL后,怎样生成CAB文件,放到网页中<OBJECT>里面,就可以自动下载?
- MFC深入浅出的 问题 很简单
- 控件消息问题
- 介绍几本VC入门的好书
- 如何将CString 转换成char*,急!
- CDialog::LoadBitmap 不能加载位图
- 用了SetForegroundWindow();窗口在任务栏闪烁,怎么让它不要闪,直接到最前面?( win2000下)
- ?关于button的简单问题。。。请多指教
- atl连接点调用
{
Fire_MycomEvent();
}然后我在工作线程中进行调用UINT _DownLoad(LPVOID lParam)
{
.....
.....
pObj->fEvents(); //出现错误,可是该函数如果不在工作线程中则运行正常
}
原因是由于你保存的事件接受器接口指针不能直接被另一个线程即你的工作线程所用,必须要进行Marshal调整,你可以通过CoMarshalInterThreadInterfaceInStream和CoGetInterfaceAndReleaseStream来传递接口指针
可以举个详细的例子吗?可以在开帖加分
使用对象,就要现实的把对象列集(Marshal)过去
以便产生Proxy