代码摘要如下:
UINT CdecryptDlg::Test(LPVOID pParam)
{
m_critSect.Lock();
if (m_pUsername == "")
{
m_critSect.Unlock();
return 0;
}
m_critSect.Unlock();
...
return 0;
}
void CdecryptDlg::OnBnClickedButtonTry()
{
CString csCaption;
csCaption = "Clicked?";
AfxMessageBox ((LPCTSTR)csCaption);
m_pBtnTry.GetWindowTextW (csCaption);
if (csCaption == "Try")
{
csCaption = "Pause";
m_pBtnTry.SetWindowTextW ((LPCTSTR)csCaption);
UpdateData(FALSE);
m_pWorker1 = AfxBeginThread ((AFX_THREADPROC)CdecryptDlg::Test(this), this);
}
else
{
...
}
csCaption = "Clicked!";
AfxMessageBox ((LPCTSTR)csCaption);
}
以上代码在VS2008环境下编译调试。"Clicked?"提示框弹出,而"Clicked!"提示框却没弹出。程序则陷入线程函数Test的长时间处理中,UI不能执行任何操作。这是为什么?该如何改呢?