同步方式读取会造成阻塞,你可以采用异步方式读取:
void CFuView::OnPipeRead()
{
char buf100;
DWORD dwRead;
OVERLAPPED ov;
ov.Offset = 0;
ov.OffsetHigh = 0;
ov.hEvent = CreateEvent(NULL,TRUE,FALSE,NULL);
if(!ReadFile(hRead,buf,100,&dwRead,&ov))
{
if (GetLastError() == ERROR_IO_PENDING)
{
while(!GetOverlappedResult( hRead ,
&ov, &dwLength, TRUE ))
{
DWORD dwError = GetLastError();
if(dwError == ERROR_IO_INCOMPLETE)
continue;
else
{
MessageBox("asdfasdf¡");
break;
}
}
}
}
MessageBox(buf);
}
ReadFile(hRead,buf,100,&dwRead,NULL);
if(!buf[0])
{
MessageBox("读取数据失败!");
return;
}