读书人

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

发布时间: 2012-04-11 17:42:33 作者: rapoo

异步读数据时漏数据 该如何解决呢??
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太乱了。

读书人网 >VC/MFC

热点推荐