MFC对话框线程传入指针操作UpdateData 崩溃

structGetHttp{CStringwww;intsave;CStringaddress;CListCtrl*list;CStringwwwaddress;CHTT... struct GetHttp
{
CString www;
int save;
CString address;
CListCtrl* list;
CString wwwaddress;
CHTTPDlg* p;

};

GetHttp* www = new GetHttp();
www->p = this;
www->list = &this->list1;
CreateThread(NULL,0,httpFdian,(LPVOID)www,0,&aa);
//我是传入结构体指针到线程的

GetHttp* a = (GetHttp*)lpParam;

a->p->edit1++; //正常
a->list->InsertItem(ii,Mun); // 正常
//a->p->UpdateData(false); //该语句崩溃
!求解呀...
展开
 我来答
龚炜林
2013-09-16 · TA获得超过1560个赞
知道大有可为答主
回答量:1102
采纳率:66%
帮助的人:578万
展开全部

UpdateData确实不能放到子线程,之前我遇到这个问题时查看了源代码,UpdateData引发的操作必须是窗口的产生线程才行。

BOOL CWnd::UpdateData(BOOL bSaveAndValidate)
{
 ASSERT(::IsWindow(m_hWnd)); // calling UpdateData before DoModal?
 CDataExchange dx(this, bSaveAndValidate);
 // prevent control notifications from being dispatched during UpdateData
 _AFX_THREAD_STATE* pThreadState = AfxGetThreadState();
 HWND hWndOldLockout = pThreadState->m_hLockoutNotifyWindow;
 ASSERT(hWndOldLockout != m_hWnd);   // must not recurse
 pThreadState->m_hLockoutNotifyWindow = m_hWnd;
 BOOL bOK = FALSE;       // assume failure
 TRY
 {
  DoDataExchange(&dx);
  bOK = TRUE;         // it worked
 }
 CATCH(CUserException, e)
 {
  // validation failed - user already alerted, fall through
  ASSERT(!bOK);
  // Note: DELETE_EXCEPTION_(e) not required
 }
 AND_CATCH_ALL(e)
 {
  // validation failed due to OOM or other resource failure
  e->ReportError(MB_ICONEXCLAMATION, AFX_IDP_INTERNAL_FAILURE);
  ASSERT(!bOK);
  DELETE_EXCEPTION(e);
 }
 END_CATCH_ALL
 pThreadState->m_hLockoutNotifyWindow = hWndOldLockout;
 return bOK;
}
追问
那么我可以定义线程到 类的public 中吗?
追答
这个随便你,线程函数,线程创建。这个和你UpdateData有关系?
huang71216
2013-09-16 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:171
采纳率:0%
帮助的人:84.4万
展开全部
把报错的图截出来
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
飞虎高级队长
2013-09-16
知道答主
回答量:15
采纳率:0%
帮助的人:11.4万
展开全部
建议加跟内存
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
jackeagle1
2013-09-16 · TA获得超过133个赞
知道答主
回答量:56
采纳率:100%
帮助的人:10.9万
展开全部
轻轻拍哦过。。。 在漂
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
归悦欣cf
2013-09-15 · TA获得超过1443个赞
知道大有可为答主
回答量:4250
采纳率:59%
帮助的人:1324万
展开全部
建议跟踪看一看。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式