解决多线程中spInputElement.GetPropertyByName( L"name", &vName )导致崩溃
来源:互联网 发布:淘宝的网络经营模式 编辑:程序博客网 时间:2024/05/17 07:32
原因是COM的对象都生活在套间里,拥有线程相关性。就是你的gui主线程如果要共享一个COM接口,比如说是IHTMLDocument2*,不可以直接就把指针copy或者共享给子线程,需要向系统一个服务注册一个cookie,DWORD格式,然后子线程询问系统把这个cookie还原成接口指针。
IHTMLDocument2* pHtmlDocument2 =(IHTMLDocument2*)(m_web.get_Document());if(!pHtmlDocument2){return;}CComGITPtr<IHTMLDocument2> pgit(pHtmlDocument2);m_dwCookie=pgit.Detach();//开启一个线程进行循环操作AfxBeginThread((AFX_THREADPROC)StartRegBeginThread, this); //如果都采用默认值
线程函数中处理
UINT CBaiduReg20Dlg::StartRegBeginThread(DWORD pParam){CBaiduReg20Dlg* pThis = (CBaiduReg20Dlg*)pParam;OleInitialize(NULL);CComGITPtr<IHTMLDocument2> pHtmlDocument2GITP(pThis->m_dwCookie);CComPtr<IHTMLDocument2> pHTMLDocument2;if(FAILED(pHtmlDocument2GITP.CopyTo(&pHTMLDocument2))){AtlTrace(_T("Failed in GIT to PTR"));CoUninitialize();return 0;}pHtmlDocument2GITP.Revoke();//执行代码pThis->StartRegBegin(pHTMLDocument2);CoUninitialize();return 0;}
CComVariant vName, vType,vVal; // 名称,类型 ,值
hr = spInputElement.GetPropertyByName( L"name", &vName );
if( FAILED( hr ) )
{
continue;
}
0 0
- 解决多线程中spInputElement.GetPropertyByName( L"name", &vName )导致崩溃
- 多线程导致程序崩溃
- BOOST::ASIO多线程下socket关闭导致进程崩溃问题定位及解决
- 如何解决ios SIGPIPE 导致的崩溃
- 如何解决ios SIGPIPE 导致的崩溃
- 如何解决ios SIGPIPE 导致的崩溃
- 如何解决ios SIGPIPE 导致的崩溃
- iOS中解决后台返回的null导致的崩溃问题
- MFC中GDI超过9999导致程序崩溃问题的解决
- 【解决】循环导入导致:Unknown type name "***"
- ActiveX 在VS2008中导致崩溃
- jquery中uploadify插件导致浏览器崩溃
- 解决一个 Websphere 上导致 JVM 崩溃的 bug
- vc2010使用CMFCEditBrowseCtrl控件导致程序退出崩溃解决
- 解决jquery.uploadify上传插件导致google崩溃
- 解决Uploadify.js导致Chrome频繁崩溃Crash 的解决方案
- 解决curl超时导致应用崩溃的问题
- 【已解决】Android 6.0权限设置,导致程序崩溃
- 排列的逆序数
- Android之实现简单小闹钟
- 渗透测试之踩点篇
- requirejs源码学习笔记(一)
- 欢迎使用CSDN-markdown编辑器
- 解决多线程中spInputElement.GetPropertyByName( L"name", &vName )导致崩溃
- Servlet的init()方法在什么时候执行
- mysql数据库笔记
- HDOJ(HDU).1058 Humble Numbers (DP)
- DBCP连接池学习
- mysql数据导入/出产生Errcode: 13 - Permission denied错误解决方法
- webpack
- [剑指Offer]-求序列中最小的k个数
- Win7下U盘安装Ubuntu14.04双系统