选择的是MFC.exe项目 在OnInitDialog()函数中
HThread=AfxBeginThread(ThreadFun,NULL,CREATE_SUSPENDED,0,0,NULL);
UINT ThreadFun(LPVOID LPARAM)
{
int Count=0;
char Temp[100];
while(1)
{
if(flag)
{
Count++;
sprintf(Temp,"%d",Count);
SetDlgItemText(AfxGetApp()->m_pMainWnd->m_hWnd,IDC_EDIT1,Temp);
}
}
return 0;
}还没调用ResumeThread(HThread); 就开始执行了 另外挂起的话 程序也一直在跑 线程挂起的话,线程下的程序不是应该停止了吗
HThread=AfxBeginThread(ThreadFun,NULL,CREATE_SUSPENDED,0,0,NULL);
UINT ThreadFun(LPVOID LPARAM)
{
int Count=0;
char Temp[100];
while(1)
{
if(flag)
{
Count++;
sprintf(Temp,"%d",Count);
SetDlgItemText(AfxGetApp()->m_pMainWnd->m_hWnd,IDC_EDIT1,Temp);
}
}
return 0;
}还没调用ResumeThread(HThread); 就开始执行了 另外挂起的话 程序也一直在跑 线程挂起的话,线程下的程序不是应该停止了吗
HThread=AfxBeginThread(ThreadFun,NULL,0,0,0,NULL);的时候是一运行就开始跑
但是看函数介绍改成
HThread=AfxBeginThread(ThreadFun,NULL,CREATE_SUSPENDED,0,0,NULL);
应该是
调用ResumeThread(HThread); 才开始跑
求解 先谢谢大家了
注意参数
ResumeThread(HThread);
线程开启不了 是什么原因啊?
用HThread->ResumeThread() 或 ResumeThread(HThread->m_hThread);
这个flag没处理对,
试试 volatile BOOL flag;
left of '->ResumeThread' must point to class/struct/union
初始化的时候已经是true了
而且ResumeThread(HThread);前也加了flag=True;
应该是线程没启动吧
if (m_bConnected)
{
if ((m_pThreadRead=AfxBeginThread(CommWatchRead,this))==NULL)
{
AfxMessageBox("Create thread CommWatchRead() failed !",MB_ICONSTOP);
m_bConnected=FALSE;
this->EndDialog(0);
return TRUE;
}
else
{
m_pThreadRead->SetThreadPriority(THREAD_PRIORITY_NORMAL);
m_pThreadRead->ResumeThread();
}
}
//
BOOL CSerialPort::StartMonitoring()
{
if (!(m_Thread = AfxBeginThread(CommThread, this)))
return FALSE;
TRACE("Thread started\n");
return TRUE;
}//
// Restart the comm thread
//
BOOL CSerialPort::RestartMonitoring()
{
TRACE("Thread resumed\n");
m_Thread->ResumeThread();
return TRUE;
}
//
// Suspend the comm thread
//
BOOL CSerialPort::StopMonitoring()
{
TRACE("Thread suspended\n");
m_Thread->SuspendThread();
return TRUE;
}不知道start了没有?