线程获得进程内对象
_com_ptr_t <........> pp //全局
class a::m(.........)
{
pp.CreateInstance(...)//实例化
pp->...//执行pp的方法,这些都没有问题
DWORD dwThreadId;
m_hThread = CreateThread(....);//建立一个线程
}
a::Threadproc()//线程中执行此方法
{
pp->..//执行方法时候发现pp的所有方法都不能成功执行了
}
/*
请大侠们指教
不胜感激
*/
问题点数:100、回复次数:5Top
1 楼ingot(九儿)回复于 2002-12-05 15:18:56 得分 30
UINT threadproc(LPVOID pParam)
{
a* pp = (a*)pParam;
pp->...//执行方法...
return 1;
}
不知道好使不Top
2 楼sxbyl(sxbyl)回复于 2002-12-05 15:44:42 得分 30
在线程里先CoInitialize,记住完事后CoUninitializeTop
3 楼BlackIceCN(星际浪子)回复于 2002-12-05 15:46:56 得分 0
to ingot:
如果这么做的话
恐怕pp->...执行的就只能是class a的方法而不是对象pp的方法了吧Top
4 楼BlackIceCN(星际浪子)回复于 2002-12-06 14:29:59 得分 0
我查了一下因为pp是一个Word::ApplicationPtr
但是word不存在对应的ThreadingModel,他只能在主STA中运行。
to sxbyl(会用Windows的白菜):
我试了一下你的方法,还是第一次运行没有问题可是第二次执行就没有
反应了,而且没有打出任何错误信息Top
5 楼sxbyl(sxbyl)回复于 2002-12-06 14:35:48 得分 40
>还是第一次运行没有问题
“还是”?以前不是一次都不行吗?
如果第一次可以运行的话那就没什么问题了。开始你没说是什么对象。对于Word之类的COM对象,我记得可以通过参数决定是否新开Word应用程序的(也有可能记错了,你自己载再查查)。你可以试一次,在第一个Word完全退出后再开新的线程Top




