有关线程的问题

事后猪葛 2012-12-26 02:22:53
线程是不是一定要在初始化中创建
...全文
234 19 打赏 收藏 转发到动态 举报
写回复
用AI写文章
19 条回复
切换为时间正序
请发表友善的回复…
发表回复
赵4老师 2012-12-29
  • 打赏
  • 举报
回复
有时候需要将多线程的思路改为多进程。
赵4老师 2012-12-27
  • 打赏
  • 举报
回复
崩溃或中断的时候在弹出的对话框按相应按钮进入调试,按Alt+7键查看Call Stack里面从上到下列出的对应从里层到外层的函数调用历史。双击某一行可将光标定位到此次调用的源代码或汇编指令处。
赵4老师 2012-12-27
  • 打赏
  • 举报
回复
难道要在关键的地方加互斥锁或临界区?
事后猪葛 2012-12-27
  • 打赏
  • 举报
回复
如果我不放在线程中的话,就会在spElemeeeeeeee->get_innerText(&bstr);这个时候出现中断
事后猪葛 2012-12-27
  • 打赏
  • 举报
回复
引用 14 楼 omega_sta 的回复:
ui别用线程,容易卡住,如果子窗口一定要使用线程,需要自己写个消息循环
不懂你的意思
事后猪葛 2012-12-27
  • 打赏
  • 举报
回复
我的流程 1.先加载网站 2.然后利用MSHTML去填写并提交(因为事先知道规则,所以提取一定成功) 3.在去加载网站(就这里出问题,因为第一步中的加载是在初始化中的,所以不能再再次利用,而如果放在线程中的话,就会卡住) 4.假设3再次加载成功,如果有出现验证码的话,我就会去更换vpn,然后再去加载 以上就是我的流程,主要问题出现是3中
Saingel 2012-12-27
  • 打赏
  • 举报
回复
ui别用线程,容易卡住,如果子窗口一定要使用线程,需要自己写个消息循环
事后猪葛 2012-12-27
  • 打赏
  • 举报
回复
如果都在主线程中做的话,就没有任何的问题,我可以提取我想要的字符,本来那个加载网站的代码是在初始化中 而且我还发现CComVariant vtUrl("https://eu.battle.net/account/creation/tos.html?style=lobby&theme=&country=DEU"); CComVariant vtEmpty; m_WebOcx.Navigate2(&vtUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty);这段代码必须要在下面的代码全部运行完了之后才能正常的加载网站
事后猪葛 2012-12-27
  • 打赏
  • 举报
回复
引用 11 楼 zhao4zhong1 的回复:
我猜可能是以下原因:(可多选) ·m_WebOcx.Navigate2不支持多线程上下文 ·m_WebOcx.Navigate2触发了操作系统底层socket创建和连接这样费时非资源的操作 ·默认浏览器同时连接数限制 ·网站https://eu.battle.net限制来自同一个IP的连接数 ·……
CComVariant vtUrl("https://eu.battle.net/account/creation/tos.html?style=lobby&theme=&country=DEU"); CComVariant vtEmpty; m_WebOcx.Navigate2(&vtUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty); int gji; CString aaaaaa; while(1) { long r=0; r = m_WebOcx.get_ReadyState(); if (r==READYSTATE_COMPLETE) { BSTR bstr; CComPtr < IDispatch > spDispDoc; spDispDoc = m_WebOcx.get_Document(); CComQIPtr< IHTMLDocument2 > spDocument2 = spDispDoc; CComQIPtr<IHTMLElement> spElemeeeeeeee; spDocument2->get_body(&spElemeeeeeeee); spElemeeeeeeee->get_innerText(&bstr); //SysFreeString(bstr); aaaaaa=bstr; break; } } 这是我的代码,这段代码是在另外的线程中建的,然后到spElemeeeeeeee->get_innerText(&bstr);就中断
赵4老师 2012-12-27
  • 打赏
  • 举报
回复
我猜可能是以下原因:(可多选) ·m_WebOcx.Navigate2不支持多线程上下文 ·m_WebOcx.Navigate2触发了操作系统底层socket创建和连接这样费时非资源的操作 ·默认浏览器同时连接数限制 ·网站https://eu.battle.net限制来自同一个IP的连接数 ·……
事后猪葛 2012-12-27
  • 打赏
  • 举报
回复
引用 9 楼 zhao4zhong1 的回复:
随时 就是别创建太多
为什么这三个语句 CComVariant vtUrl("https://eu.battle.net/account/creation/tos.html?style=lobby&theme=&country=DEU"); CComVariant vtEmpty; m_WebOcx.Navigate2(&vtUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty); 在线程里面如果我设置了while循环的话就会卡住m_WebOcx.Navigate2(&vtUrl, &vtEmpty, &vtEmpty, &vtEmpty, &vtEmpty);这里,如果不循环都很正常
赵4老师 2012-12-27
  • 打赏
  • 举报
回复
随时 就是别创建太多
事后猪葛 2012-12-26
  • 打赏
  • 举报
回复
引用 7 楼 dream_cl39 的回复:
引用 6 楼 jiangweilian 的回复:引用 5 楼 proorck6 的回复:线程函数结束了,线程就结束了,如果不想让线程结束,就写一个while循环。你知道这个Navigate2吗?这个是浏览器控件加载网页时用到的,我把这个加载网页的函数Navigate2放到了线程里面,如果用while的话,就胡卡住,不用while倒是很正常,因为我想循环的加载网页而不是只是……
sleep 没用的
夏梦c 2012-12-26
  • 打赏
  • 举报
回复
引用 6 楼 jiangweilian 的回复:
引用 5 楼 proorck6 的回复:线程函数结束了,线程就结束了,如果不想让线程结束,就写一个while循环。你知道这个Navigate2吗?这个是浏览器控件加载网页时用到的,我把这个加载网页的函数Navigate2放到了线程里面,如果用while的话,就胡卡住,不用while倒是很正常,因为我想循环的加载网页而不是只是一次,你能帮我想想办法吗?谢谢了 ……
不知道Navigate2是什么意思,不知道是不是支持多次加速,要不试下在线程里sleep一定时间
事后猪葛 2012-12-26
  • 打赏
  • 举报
回复
引用 5 楼 proorck6 的回复:
线程函数结束了,线程就结束了,如果不想让线程结束,就写一个while循环。
你知道这个Navigate2吗?这个是浏览器控件加载网页时用到的,我把这个加载网页的函数Navigate2放到了线程里面,如果用while的话,就胡卡住,不用while倒是很正常,因为我想循环的加载网页而不是只是一次,你能帮我想想办法吗?谢谢了
proorck6 2012-12-26
  • 打赏
  • 举报
回复
线程函数结束了,线程就结束了,如果不想让线程结束,就写一个while循环。
事后猪葛 2012-12-26
  • 打赏
  • 举报
回复
引用 3 楼 proorck6 的回复:
可以创建一个线程,然后在其中再创建多个线程。
程序里的语句运行完了线程是不是就退出了?
proorck6 2012-12-26
  • 打赏
  • 举报
回复
可以创建一个线程,然后在其中再创建多个线程。
suifeng3702 2012-12-26
  • 打赏
  • 举报
回复
引用 楼主 jiangweilian 的回复:
线程是不是一定要在初始化中创建
什么时候用,什么创建都可以
zilaishuichina 2012-12-26
  • 打赏
  • 举报
回复
没这规定~~~

64,685

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

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