MFC编码注意(2)

TNND!!
怎么今天又碰了个Dz,真是变态.
场景如下:
主线程中调用:
..............................
 m_saveThread = AfxBeginThread(ThreadSaveData,this);
子线程:
UINT CMainFrame::ThreadSaveData(LPVOID lParam)
{
CWinThread* saveThread = NULL;
 CMainFrame* mainFrame = reinterpret_cast<CMainFrame*>(lParam);
saveThread = mainFrame->GetSaveThread();
if(saveThread)
{
saveThread->SuspendThread();
}
.......................
}
 
结果我在调试的过程中经常出现saveThread时为空,时不为空.
让我感到特别不爽.
改为如此解决问题:
 m_saveThread = AfxBeginThread(ThreadSaveData,this,NULL, 0, CREATE_SUSPENDED);
子线程:
UINT CMainFrame::ThreadSaveData(LPVOID lParam)
{
CWinThread* saveThread = NULL;
 CMainFrame* mainFrame = reinterpret_cast<CMainFrame*>(lParam);
.......................
}

PS:
出现以上问题主要是在于主线程create 一个thread后有可能先执行子线程,也有可能先给 m_saveThread赋值,
大家以为然否?
不知还有没有更好的方案?
 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值