我在一个大约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.文件比这长得多。任何人都可以提出一个建议,为什么我可能会收到此错误?
答案 0 :(得分:1)
好的,所以这看起来似乎是一个线程问题。我注意到当我将鼠标悬停在变量上时,我得到了一组值,并且在Watch窗口中有一个不同的集合,这些都不是实际值。无论出于何种原因,在某些时候,ByteStart变成了一个超大值,虽然如果我只是逐步跟踪代码,这似乎并没有发生,只有当它只是自己运行时才会发生。怪异!