vc MFC 用AfxBeginThread()启动不了线程 10
开启线程中写入:CWinThread*m_pEventThread;m_pEventThread=AfxBeginThread(MyThread,this);程序调试发现...
开启线程中写入:
CWinThread* m_pEventThread;
m_pEventThread = AfxBeginThread(MyThread,this);
程序调试发现进入不了线程,单步调试时发现AfxBeginThread(...)函数中if条件满足,线程指针被删除了,如下:
if(!pThread->CreateThread(...))
{
pThread->Delete();
return NULL;
}
诚请高手指明为何开启不了线程???在线等,十分感谢! 展开
CWinThread* m_pEventThread;
m_pEventThread = AfxBeginThread(MyThread,this);
程序调试发现进入不了线程,单步调试时发现AfxBeginThread(...)函数中if条件满足,线程指针被删除了,如下:
if(!pThread->CreateThread(...))
{
pThread->Delete();
return NULL;
}
诚请高手指明为何开启不了线程???在线等,十分感谢! 展开
展开全部
CWinThread* thread;//全局变量
创建多线程:
thread=AfxBeginThread(RepThreadProc,this,THREAD_PRIORITY_NORMAL,0,0,NULL);//
RepThreadProc为//多线程函数
多线程函数:
头文件中声明:
static UINT RepThreadProc(LPVOID
pParam);
源文件中定义:
UINT
CRepeat::RepThreadProc(LPVOIDpParam)// CRepeat为使用多线程的类
{
while(XXX)//条件判断是否退出多线程,XXX自己定义变量来控制
{
//在这实现多线程代码
}
return 0;
}
创建多线程:
thread=AfxBeginThread(RepThreadProc,this,THREAD_PRIORITY_NORMAL,0,0,NULL);//
RepThreadProc为//多线程函数
多线程函数:
头文件中声明:
static UINT RepThreadProc(LPVOID
pParam);
源文件中定义:
UINT
CRepeat::RepThreadProc(LPVOIDpParam)// CRepeat为使用多线程的类
{
while(XXX)//条件判断是否退出多线程,XXX自己定义变量来控制
{
//在这实现多线程代码
}
return 0;
}
展开全部
调试的时候,在Watch(监视)里面添加一个“@err”,然后到你那个如下的地方的时候,光标停在pThread->Delete处,看那个@err是什么数字。然后到msdn上找system error codes,看看数字对应的是什么错误
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
看看你的MyThread函数,是不是一进线程就退出线程了
更多追问追答
追问
没有,是AfxBeginThread()函数中
if(!pThread->CreateThread(...))
{
pThread->Delete();
return NULL;
}
的问题,但是这个是我调用的,不知道怎么会跳到if中执行pThread->Delete();
追答
不要看AfxBeginThread是怎么执行的。。去看你的MyThread函数,那才是你线程要执行的函数
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
把LastError查询出来
更多追问追答
追问
谢谢!如何查LastError?
追答
在出错的代码之后 调用 GetLastError
看看返回值
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询