if((CDataAcqu::m_amtk==1)&&(m_calibration->m_use_autosampler==TRUE))
{
int b; 
if( (tapp->ptr->pRunStatus==0) || (tapp->ptr->pRunStatus==15))//&& tapp->RunFlag==1)
{ b=tapp->ptr->pSequenceProgressIndex;
if(b<RunIndex)RunIndex=b; 
if(RunIndex<=(tapp->ptr->pSeqCount))
{
tapp->ptr->pSeqInjectModeIndex=RunIndex;
if(tapp->ptr->pSeqInjectModeData==2)
{
tapp->ptr->pSequenceProgressIndex=b;     //序列程序索引
tapp->ptr->pEquipmentStart();            //启动自动进样器
}
RunIndex++;
}
else
{
RunIndex=1;
RepeatRunIndex=0;
}
}
Sleep(5000);
}
TestHardware();绿色字的代码不论是加在红色的函数之前还是之后都会影响TestHardware()函数,不明白是什么原因谁能帮我解答一下。

解决方案 »

  1.   

    if((CDataAcqu::m_amtk==1)&&(m_calibration->m_use_autosampler==TRUE)) 

       int b; 
       if( (tapp->ptr->pRunStatus==0) || (tapp->ptr->pRunStatus==15))
       { 
            b=tapp->ptr->pSequenceProgressIndex; 
            if(b <RunIndex)
                   RunIndex=b; 
            if(RunIndex <=(tapp->ptr->pSeqCount)) 
            { 
               tapp->ptr->pSeqInjectModeIndex=RunIndex; 
                if(tapp->ptr->pSeqInjectModeData==2) 
                 { 
                      tapp->ptr->pSequenceProgressIndex=b;    //序列程序索引 
                         tapp->ptr->pEquipmentStart();            //启动自动进样器 
                   } 
                 RunIndex++; 
            } 
            else 
            { 
               RunIndex=1; 
               RepeatRunIndex=0; 
            } 
        } 
    }
    TestHardware(); 绿色字的代码不论是加在红色的函数之前还是之后都会影响TestHardware()函数,不明白是什么原因谁能帮我解答一下。
      

  2.   

    全是逻辑判断  别人如何知道...
    代码写的很差劲   该空格的地方应该要空格
    例如
    if((CDataAcqu::m_amtk == 1) && (m_calibration->m_use_autosampler == TRUE)) 
    最好换行  更加明白
    if((CDataAcqu::m_amtk == 1) && 
       (m_calibration->m_use_autosampler == TRUE)) 
      

  3.   

    现在看不出什么,不过感觉,代码之间是不是有数据冲突呢?估计TestHardware是开启线程吧,要是这样,肯定会有数据共享冲突或者其他的线程安全问题的。考虑一下吧,适当的加锁会有好处。