2011-04-20 6 views
0

FileStream 개체를 사용하여 네트워크상의 다른 파일에서 데이터를 읽으려고합니다. 그래서 필요한 파일의 일부를 읽으려면 Tasks (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을 Task에 선언했는지, 아니면 그 안에서 선언 했습니까? –

+0

아마 파일의 끝에 있습니까? – 321X

+3

오류 메시지가 무엇입니까? –

답변

0

int_ReadBytes의 반환 값은 무엇입니까? (int_RecordLength * uint_BufferThis)과 같지 않을 수 있습니다. 읽기에는 파일에 충분한 바이트가 없기 때문에 예외를 throw하기 위해 코드가 손상 될 수 있습니다.

+0

아니 그것의 EOF와 그 여전히 읽을 수있는 충분한있어. 실행 포인터를 드래그하여 디버그에서 다시 실행하도록 코드를 설정하면 올바르게 작동합니다. – user696961