读书人

线程函数有关问题

发布时间: 2012-05-21 18:04:41 作者: rapoo

线程函数问题
描述:
MFC对话框工程,想用一个Edit控件实时显示线程函数中某个变量的实时值。
下面是个Demo代码:

C/C++ code
void CThreadTestDlg::OnButton1()//启动线程 {    // TODO: Add your control notification handler code here    DWORD ThreadId;      handleThread=::CreateThread(NULL,0,TestThreadProc,this,0,&ThreadId);}void CThreadTestDlg::OnButton2()//关闭线程{    // TODO: Add your control notification handler code here    TerminateThread(handleThread,0);}DWORD WINAPI CThreadTestDlg::TestThreadProc(LPVOID lParam){    CThreadTestDlg *mainDlg=(CThreadTestDlg*)lParam;    int iMsg=0;    for (int i=0;i<65536;i++)    {        iMsg++;        mainDlg->OnShowMsg(iMsg);    }    return 0;}void CThreadTestDlg::OnShowMsg(int iMsg){    m_strMsg.Format("%d",iMsg);//m_strMsg为Edit控件绑定变量    UpdateData(FALSE);}

UpdateData(FALSE);到这里程序就中断了,希望高手能指点一下。。。

[解决办法]
不应该在线程里边调用UpdateData(FALSE),等待这个线程跑完了,再调用
[解决办法]
DWORD WINAPI CThreadTestDlg::TestThreadProc(LPVOID lParam);
线程函数有两种:
1,全局函数:UINT ThreadFun(LPVOID p);
2,静态成员函数:static UINT CThreadTestDlg::TestThreadProc(LPVOID p);

读书人网 >C++

热点推荐