2011-04-20 79 views
0

我想使用FileStream對象從網絡上的不同文件讀取數據。 所以我創建了任務(System.Threading.Tasks)來讀取所需的部分文件。System.Threading.Tasks和FileStream

相當驚訝的行爲。這些任務將引發一個錯誤:

int_ReadBytes = stm_BaseStream.Read (byt_buffer, 0, (int) (int_RecordLength * uint_BufferThis)); 

if (int_ReadBytes != (int_RecordLength * uint_BufferThis)) 
{ 
     throw new Exception ("Could not read record"); 
     // throws an error here. 
} 

人使用任務使用FileStream對象,或有任何想法,爲什麼我得到這個問題? 謝謝。

+0

你在任務中聲明瞭stm_BaseStream嗎? – 2011-04-20 09:00:39

+0

也許你在文件的末尾? – 321X 2011-04-20 09:01:23

+3

錯誤信息是什麼? – 2011-04-20 09:01:56

回答

0

int_ReadBytes的返回值是多少?它可能不等於(int_RecordLength * uint_BufferThis),只是因爲文件中沒有足夠的字節要讀取,這會導致您的代碼拋出異常。

+0

不是EOF,它仍然有足夠的可讀性。如果我通過拖動運行指針將代碼設置爲在調試中重新運行,則它工作正常。 – user696961 2011-04-26 12:50:11