主執行緒登錄了,如何在其他執行緒中呼叫啊?高手幫幫忙!
//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);
uj5u.com熱心網友回復:
先看CreateInstance有沒有成功,然后就是對應的API是否支持多個執行緒呼叫uj5u.com熱心網友回復:
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 );
uj5u.com熱心網友回復:
你可以在創建執行緒的時候將你的pHttpReq指標作為執行緒函式的引數傳遞給執行緒轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/106615.html
標籤:進程/線程/DLL
上一篇:CAD .SHX檔案怎么應用于具體字體的矢量顯示呢...?
下一篇:專案微管理41 - 資源
