我创建了一个定时器,每隔一秒钟去创建一个线程执行一个函数,但是代码跑了一会之后就崩溃了,代码如下:
voidCTestTradingDayInterfaceDlg::OnBnClickedIsTradeDay()
{
//TODO:Addyourcontrolnotificationhandlercodehere
//获取当前系统时间
CTimestartTime=CTime::GetCurrentTime();
CStringstrTime=startTime.Format("%Y%m%d%H%M%S");
CTimeSpantmSpan(0,2,0,0);
CTimetime=startTime+tmSpan;
IsTradingDayEndTime=time.Format("%Y%m%d%H%M%S");
//设置定时器属性
SetTimer(1,1000,NULL);
}
voidCTestTradingDayInterfaceDlg::OnTimer(UINT_PTRnIDEvent)
{
//TODO:Addyourmessagehandlercodehereand/orcalldefault
switch(nIDEvent)
{
//执行多线程中的IsTradeDay按钮事件
case1:
{
CTimetime=CTime::GetCurrentTime();
CStringcurrentTime=time.Format("%Y%m%d%H%M%S");
//判断当前线程执行事件有没有到个5小时,如果到5个小时就退出,否则继续运行。
if(currentTime.Compare(IsTradingDayEndTime)!=0)
{
CWinThread*pMyFirstWorker,*pMySecondWorker,*pMyThreeWorker;
LPVOIDpParam=NULL;
//创建一个新线程,用来运行IsTradeDayThread1函数
pMyFirstWorker=AfxBeginThread((AFX_THREADPROC)IsTradeDayThread1,pParam);
if(!pMyFirstWorker)
{
AfxMessageBox("执行IsTradeDayThread1函数的线程创建失败!");
return;
}
//创建一个新线程,用来运行IsTradeDayThread2函数
pMySecondWorker=AfxBeginThread((AFX_THREADPROC)IsTradeDayThread2,pParam);
if(!pMySecondWorker)
{
AfxMessageBox("执行IsTradeDayThread2函数的线程创建失败!");
return;
}
//创建一个新线程,用来运行IsTradeDayThread3函数
pMyThreeWorker=AfxBeginThread((AFX_THREADPROC)IsTradeDayThread3,pParam);
if(!pMyThreeWorker)
{
DWORDtemp=GetLastError();
AfxMessageBox("执行IsTradeDayThread3函数的线程创建失败!");
return;
}
}
default:
break;
}
程序跑了一会之后就不停的弹出警告框:“执行IsTradeDayThread1函数的线程创建失败!”,“执行IsTradeDayThread2函数的线程创建失败!”,:“执行IsTradeDayThread3函数的线程创建失败!”
请问程序有什么问题?应该怎样改呢?
分 -->
|