这个错误折腾了很久,最后发现是因为读取长度问题引起的,准确说就是溢出了,原先的代码是:
Stream stream
= fileInfo.IsPartial
? mmf.CreateViewStream(fileInfo.From, fileInfo.Length, MemoryMappedFileAccess.Read)
: mmf.CreateViewStream(0, fileLength, MemoryMappedFileAccess.Read);
改为:
Stream stream
= fileInfo.IsPartial
? mmf.CreateViewStream(fileInfo.From, fileInfo.Length-1, MemoryMappedFileAccess.Read)
: mmf.CreateViewStream(0, fileLength, MemoryMappedFileAccess.Read);
问题解决;
网上的其它解决方案(根据自己情况而定吧):
1、将文件属性改为只读,能解决
2、有的代码可能是:mmf.CreateViewStream(0, fileLength);,将代码改为mmf.CreateViewStream(0, fileLength, MemoryMappedFileAccess.Read);也能解决;