主线程post登录网站后,如何使用多线程操作呢

saodisinai2 2017-03-19 04:40:20
主线程登录了,如何在其他线程中调用啊?高手帮帮忙!

//1.我先在MyDlg.h中定义一个全局的对象
public:
IWinHttpRequestPtr pHttpReq;
//2.然后在MyDlg.cpp中添加一个按钮函数进行登录
void CMyDlg::OnBnClickedLogin()
{......}
//3.登录成功以后,用下面这段代码获取信息

CString strUrl="******";
//pHttpReq.CreateInstance(__uuidof(WinHttpRequest));
pHttpReq->Open(_T("GET"),strUrl.AllocSysString());
pHttpReq->Send();

//问题来了,上面获取信息的代码放到主线程没有问题能获取到,
//但是如何把这段代码放到其他线程中啊?
//我下面这样操作,会出错:
//1.先在MyDlg.h中定义一个线程函数
public:
static UINT OnGetData(LPVOID lpParam);
//2.然后在MyDlg.cpp中实现函数
UINT CMyDlg::OnGetData(LPVOID lpParam)
{
CMyDlg* dlg=(CMyDlg*)lpParam;
CoInitialize(NULL);
CString strUrl="******";
// dlg->pHttpReq.CreateInstance(__uuidof(WinHttpRequest));
dlg->pHttpReq->Open(_T("GET"),strUrl.AllocSysString());
dlg->pHttpReq->Send();
CoUninitialize();
return 0;
}
//3.调用的时候就出错
AfxBeginThread(OnGetData,this);
...全文
642 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
Eleven 2017-03-21
  • 打赏
  • 举报
回复
你可以在创建线程的时候将你的pHttpReq指针作为线程函数的参数传递给线程
xiaowkkll 2017-03-20
  • 打赏
  • 举报
回复
CWinThread* AfxBeginThread( AFX_THREADPROC pfnThreadProc, LPVOID pParam, int nPriority = THREAD_PRIORITY_NORMAL, UINT nStackSize = 0, DWORD dwCreateFlags = 0, LPSECURITY_ATTRIBUTES lpSecurityAttrs = NULL ); pfnThreadProc Points to the controlling function for the worker thread. Cannot be NULL. This function must be declared as follows: UINT __cdecl MyControllingFunction( LPVOID pParam );
oyljerry 2017-03-20
  • 打赏
  • 举报
回复
先看CreateInstance有没有成功,然后就是对应的API是否支持多个线程调用

15,471

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 进程/线程/DLL
社区管理员
  • 进程/线程/DLL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

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