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;
}
诚请高手指明为何开启不了线程???在线等,十分感谢!
展开
 我来答
fish32293511
2013-07-10 · 超过32用户采纳过TA的回答
知道答主
回答量:82
采纳率:0%
帮助的人:88.3万
展开全部
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;

}
空雪梦见
2013-07-10 · TA获得超过5595个赞
知道大有可为答主
回答量:2522
采纳率:75%
帮助的人:1107万
展开全部
调试的时候,在Watch(监视)里面添加一个“@err”,然后到你那个如下的地方的时候,光标停在pThread->Delete处,看那个@err是什么数字。然后到msdn上找system error codes,看看数字对应的是什么错误
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
吾守护奇迹
2013-07-09 · TA获得超过201个赞
知道小有建树答主
回答量:237
采纳率:66%
帮助的人:150万
展开全部
看看你的MyThread函数,是不是一进线程就退出线程了
更多追问追答
追问
没有,是AfxBeginThread()函数中
if(!pThread->CreateThread(...))
{
pThread->Delete();
return NULL;
}
的问题,但是这个是我调用的,不知道怎么会跳到if中执行pThread->Delete();
追答
不要看AfxBeginThread是怎么执行的。。去看你的MyThread函数,那才是你线程要执行的函数
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
gm7996
2013-07-09 · TA获得超过1199个赞
知道小有建树答主
回答量:645
采纳率:100%
帮助的人:532万
展开全部
把LastError查询出来
更多追问追答
追问
谢谢!如何查LastError?
追答
在出错的代码之后 调用 GetLastError 
看看返回值
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 2条折叠回答
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式