从字节流中读取时出错:' System.ArgumentOutOfRangeException'

时间:2017-06-02 19:42:12

标签: c# memorystream

我在一个大约3.5兆的文件上打开了一个字节流。内容是数组中的Int32,每个数组由唯一的64位幻数分隔,然后是一些具有维度的Int32,后跟数据。

当我收到此错误时,我大约在文件的一半,即1001的数组548:

Exception thrown: 'System.ArgumentOutOfRangeException' in mscorlib.dll

Additional information: MemoryStream length must be non-negative and less than 2^31 - 1 - origin.

此行发生错误:

S.Position = ByteStart + 8

S是流。 ByteStart是873552.加法产生正确的值873560.文件比这长得多。任何人都可以提出一个建议,为什么我可能会收到此错误?

1 个答案:

答案 0 :(得分:1)

好的,所以这看起来似乎是一个线程问题。我注意到当我将鼠标悬停在变量上时,我得到了一组值,并且在Watch窗口中有一个不同的集合,这些都不是实际值。无论出于何种原因,在某些时候,ByteStart变成了一个超大值,虽然如果我只是逐步跟踪代码,这似乎并没有发生,只有当它只是自己运行时才会发生。怪异!