2014-09-23 51 views
0

我有一個錯誤情況,其中即時嘗試讀取比文件中實際存在更多的字節。在同步情況下,它會失敗並報告相應的錯誤,因爲我們調用waitFrObject並等待io完成,並測試readbytes> = ToReadbytes。但是在異步的情況下,我們開始讀取,忽略ReadFile返回的IO狀態flage(這是預期的)並繼續我們的操作。 所以這個錯誤實際上並沒有在異步情況下被捕獲。現在,如果我檢查等待IO完成以檢查readbytes> = ToreadBytes,那麼它將不再是異步的,因爲我們是waitng。那麼我該如何處理這種情況呢? (注意 - 讀取比實際存在的字節數更多的錯誤是使錯誤重現的方法之一)測試如果readbytes等於在異步模式下使用ReadFile讀取字節

Im使用windown的ReadFile函數進行讀取。

+0

沒有一些可用的代碼,我們不能真正幫助您,因爲我們沒有足夠的信息來了解您嘗試過的內容。與此同時,您應該花一些時間閱讀[MSDN]上的文檔(http://msdn.microsoft.com/en-gb/library/windows/desktop/aa365683%28v=vs.85%29.aspx),或者查看出一些[示例](http://code.msdn.microsoft.com/windowsdesktop/CppAsynchronousIO-a3f7c07d)。 – icabod 2014-09-23 12:46:34

回答

0

假設您有一些其他線程正在等待由讀取完成觸發的事件,然後它將繼續使用數據。只需在等待之後添加支票,然後再使用數據。

+0

你讀過「Synchronization and Overlapped Input and Output」http://msdn.microsoft.com/en-us/library/windows/desktop/ms686358%28v=vs.85%29.aspx – Stuart 2014-09-24 17:06:59