MFC使用AfxBeginThread创建线程时,总是在AfxIsValidAddress处崩溃
创建线程:AfxBeginThread(Func_0101,NULL);线程函数:UINTFunc_0101(LPVOIDlPara){inti=0xFFFFFF;cha...
创建线程:
AfxBeginThread(Func_0101, NULL);
线程函数:
UINT Func_0101(LPVOID lPara)
{
int i = 0xFFFFFF;
char buf[11] = "Func0101\r\n";
CMainFrame *pMainFrame = static_cast<CMainFrame *>(AfxGetMainWnd());
CRightView *pRightView = static_cast<CRightView *>(pMainFrame->m_splitterWnd1.GetPane(0,0));
//PostMessage(pRightView->m_hWnd,WM_USR_SHOWLOGEDIT1,NULL, (LPARAM)buf);
while(i--)
{
}
return 0;
}
崩溃行:
if (!AfxIsValidAddress(pOb, sizeof(CObject))) ///此处崩溃
{
TRACE(traceAppMsg, 0, "ASSERT_VALID fails with illegal pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
我的想的是创建线程后不再管它,让它执行一段时间后自动退出,另外,
AfxBeginThread(Func_0101,THREAD_PRIORITY_NORMAL,0,0,0);
这样调用时总是提示有两个AfxBeginThread,无法自动选择,找不到解决的方法 展开
AfxBeginThread(Func_0101, NULL);
线程函数:
UINT Func_0101(LPVOID lPara)
{
int i = 0xFFFFFF;
char buf[11] = "Func0101\r\n";
CMainFrame *pMainFrame = static_cast<CMainFrame *>(AfxGetMainWnd());
CRightView *pRightView = static_cast<CRightView *>(pMainFrame->m_splitterWnd1.GetPane(0,0));
//PostMessage(pRightView->m_hWnd,WM_USR_SHOWLOGEDIT1,NULL, (LPARAM)buf);
while(i--)
{
}
return 0;
}
崩溃行:
if (!AfxIsValidAddress(pOb, sizeof(CObject))) ///此处崩溃
{
TRACE(traceAppMsg, 0, "ASSERT_VALID fails with illegal pointer.\n");
if (AfxAssertFailedLine(lpszFileName, nLine))
AfxDebugBreak();
return; // quick escape
}
我的想的是创建线程后不再管它,让它执行一段时间后自动退出,另外,
AfxBeginThread(Func_0101,THREAD_PRIORITY_NORMAL,0,0,0);
这样调用时总是提示有两个AfxBeginThread,无法自动选择,找不到解决的方法 展开
1个回答
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询