MFC - UpdateData(False)+ Thread + Debug断言失败

lex*_*_9x 0 c++ mfc multithreading visual-studio-2010

我使用Visual Studio 2010,使用MFC 2008/2010.我有THREAD和UPDATEDATA的问题(FALSE)这是init函数

BOOL CBkav_btap2_appDlg::OnInitDialog(){
     ....
     AfxBeginThread (MyThreadProc,(LPVOID)GetSafeHwnd());
     return TRUE;  // return TRUE  unless you set the focus to a control

}
Run Code Online (Sandbox Code Playgroud)

这是我的线索

UINT __cdecl MyThreadProc( LPVOID pParam )
{
    DWORD totalphys;
    DWORD availablephys;
    DWORD memoload;
    CBT2Class* pObject = (CBT2Class*)pParam;
    pObject->GetRAMandCPUInfo(totalphys,availablephys,memoload  );
    CBkav_btap2_appDlg dlgObject;
    dlgObject.ec_totalphys = totalphys;

    dlgObject.UpdateData(FALSE);<--- Can not update data
    return 0;   
}
Run Code Online (Sandbox Code Playgroud)

CBT2Class是我之前创建的dll文件中的类.ec_totalphys只是一个edit_control.当我运行时,它返回"Debud Assertion failed".我不知道为什么.请帮我.Thankss.p/s:我想我需要使用SendMessage更新Dialog的数据,但我搜索每个地方但仍无法工作.

Sco*_*MVP 5

您正在传递HWND作为线程参数.它不是指针,你不应该把它投射到任何东西.您可以使用HWND将自定义消息发布到对话框.此自定义消息可以包含wParam和lParam中的数据.对话框中的消息处理程序在主线程中运行,可以执行UpdateData调用.请参阅此处的示例,以便向对话框发布自定义消息:http: //vcfaq.mvps.org/mfc/12.htm