1. 主对话框有一个按钮,click后创建CMyThread 线程.ON_MESSAGE(TM_RCV, OnRcvvoid CTestDlgDlg::OnButton1()
{
CMyThread *pThread = (CMyThread *)::AfxBeginThread(
RUNTIME_CLASS(CMyThread),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED,
NULL);
pThread->SetDlg(this);
pThread->ResumeThread();}void CTestDlgDlg::OnRcv()
{
AfxMessageBox("收到消息");
}2. CMyThread 线程只是简单的向CTestDlgDlg发一个消息后便退出.
BOOL CMyThread ::InitInstance()
{
// TODO: perform and per-thread initialization here ::PostMessage(m_pDlg->m_hWnd, TM_RCV, 0, 0); ::AfxEndThread(0);
return TRUE;
}现象:在debug下一切正常.但是在release下按几次button1后便会出错,请高手指点一下.
{
CMyThread *pThread = (CMyThread *)::AfxBeginThread(
RUNTIME_CLASS(CMyThread),
THREAD_PRIORITY_NORMAL,
0,
CREATE_SUSPENDED,
NULL);
pThread->SetDlg(this);
pThread->ResumeThread();}void CTestDlgDlg::OnRcv()
{
AfxMessageBox("收到消息");
}2. CMyThread 线程只是简单的向CTestDlgDlg发一个消息后便退出.
BOOL CMyThread ::InitInstance()
{
// TODO: perform and per-thread initialization here ::PostMessage(m_pDlg->m_hWnd, TM_RCV, 0, 0); ::AfxEndThread(0);
return TRUE;
}现象:在debug下一切正常.但是在release下按几次button1后便会出错,请高手指点一下.
上面的确就是那么点代码,也没有变量初始化问题呀.
?1.最好是传递HWND, 而不是CWnd*, 因为MFC的CWnd不是线程安全的。
2.有没有变量未初始化的问题(尤其是指针)
release版在消息函数退出时,要对参数做处理,即退栈。