在异步模式下使用ReadFile测试readbytes是否等于toread字节

test if readbytes is equal to toread bytes using ReadFile in asynchronous mode

本文关键字:是否 readbytes 字节 toread 测试 ReadFile 模式 异步      更新时间:2023-10-16

我有一个错误场景,我试图读取比文件中实际存在的字节更多的字节。在同步的情况下,它会失败,并报告适当的错误,因为我们调用waitFrObject并等待io完成,然后测试readbytes是否>=ToReadbytes。但在异步的情况下,我们开始读取,忽略ReadFile返回的IO peding状态标志(这是预期的),并继续我们的操作。因此,在异步情况下实际上并没有捕捉到错误。现在,如果我检查等待IO完成,以检查readbytes>=ToreadBytes,那么它将不再是异步的,因为我们正在等待。那么我该如何应对这种情况呢?(注意-读取比实际存在的字节更多的字节是使错误可再现的方法之一)

我正在使用windown的ReadFile函数进行读取。

假设您有其他线程正在等待由读取完成触发的事件,然后该线程将继续使用数据。只需在等待之后添加检查,然后再使用数据。