私は10Gbから始まる大きなファイルを扱っています。処理のためにファイルの一部をメモリにロードしています。次のコードは、小さいファイル(700Mb)で正常に機能します
byte[] byteArr = new byte[layerPixelCount];
using (FileStream fs = File.OpenRead(recFileName))
{
using (BinaryReader br = new BinaryReader(fs))
{
fs.Seek(offset, SeekOrigin.Begin);
for (int i = 0; i < byteArr.Length; i++)
{
byteArr[i] = (byte)(br.ReadUInt16() / 256);
}
}
}
10Gbファイルを開いた後、この関数の最初の実行はOKです。しかし、2番目は例外Seek()
をスローしIO
ます:
An attempt was made to move the file pointer before the beginning of the file.
番号は次のとおりです。
fs.Length = 11998628352
オフセット=4252580352
byteArr.Length = 7746048
fs
GCは2回目の呼び出しの前にクローズドリファレンスを収集しなかったと想定し、試してみました
GC.Collect();
GC.WaitForPendingFinalizers();
しかし、運はありません。
どんな助けでも感謝されます