程序大致流程是:有两个输入通道从一个数据源接收数据放入自己的缓存里,再创建线程解析缓存里的数据,用来更新内存对象(这里是pStock对象),两个通道的解析数据的线程函数是同一个函数,下面是线程函数的一部分代码:
pStock = FindStockByCode(csCode);
switch (datatype)
{
case TIME :
{
pStock->m_SrcTime = data;
CString temp = pStock->m_SrcTime.Right(8) ;
pStock->m_csOrignTime = temp; //**运行到这里就出错**
if (pStock->GetTimeFilterVal())//如果该品种需要进行时间参数过滤
{
if (!pStock->CompareTime(pStock->m_SrcTime))
{
CString csLog;
csLog.Format("%s/%s:Lost Because CurTime--%s / SrcTime--%s \n",pStock->GetChName(),pStock->GetSrcCode(),CTime::GetCurrentTime().Format("%H:%M"),data) ;
ShowAndWriteAlarmInfo(csLog) ;//log
return ;
}
}
}
break;
case ... //其他的case语句
}
程序可以运行一会,pStock->m_csOrignTime = temp; 这一句也会被执行n遍,但是在某一刻再次运行的时候就出错了,错误指到CString对象内部Release()函数