首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

异步读数据时漏数据 该怎么解决呢?

2012-04-11 
异步读数据时漏数据 该如何解决呢??void_fastcallExpensIoThread::Execute(void)//发起一个I/O操作{unsign

异步读数据时漏数据 该如何解决呢??
void   _fastcall   ExpensIoThread::Execute(void)//发起一个I/O操作
{
        unsigned   long   ByteNumber=0;
        while(!Terminated)
        {
                if   (_BeginProduce-> WaitFor(600)==wrSignaled)//有信号状态
                {
                        if(_commusb-> Hpipe   !=   INVALID_HANDLE_VALUE)
                        {
                                ReadFile(_commusb-> Hpipe,   &_buffer[0],   _numbe,   &ByteNumber,   _mosRead);
                        }
                }
        }

}


void   _fastcall   AcceptDataThread::Execute(void)     //收数据线程
{
        unsigned   long   nBytesRead=0;
        while(!Terminated)
        {
                if   (   GetOverlappedResult(_commusb-> Hpipe,   _mosRead,&nBytesRead,   true))
                {
                        if   (nBytesRead==_resvnumber)
                        {
                        }
                }
          }
}


现在的情况是       GetOverlappedResult(_commusb-> Hpipe,   _mosRead,&nBytesRead,   true)   读的结果不等于   nBytesRead   时也   返回   true


该   如何解决呢??


[解决办法]
GetOverlappedResult()读的结果不等于 nBytesRead 时也 返回 true

没错,getov()正是这样工作。

btw,你的代码module太乱了。

热点排行