我对在没有调用堆栈的情况下抛出的访问冲突(尝试读取或写入受保护的内存)感到疯狂。我做了一些搜索,显然这表明问题发生在非托管代码中。
通过一些日志记录,它似乎发生在一个并行的 foreach 循环中,我正在其中编写一些文件。这敲响了一些警钟,因为显然 GZipStream 在幕后使用了非托管代码。
任何人都可以发现任何问题吗?
using (MemoryStream memStream = new MemoryStream())
{
Serializer.Serialize<Document>(memStream, doc);
using (FileStream compressedFileStream = File.Create(archive))
using (GZipStream compressionStream = new GZipStream(compressedFileStream, CompressionLevel.Optimal, false))
{
memStream.WriteTo(compressionStream);
}
}