【发布时间】:2011-09-15 01:35:50
【问题描述】:
我有一些代码通过使用 MemoryStream.WriteTo() 将 MemoryStream 保存到 FileStream 来写入文件。文件关闭后再次打开以读取一些元数据...
这在大约 80 - 90% 的时间里都有效。另外 20% 我得到一个异常,说该文件“正在被另一个进程使用”。
FileStream.Dispose() 不会同步释放资源吗?我不知道的 Win32 领域是否发生了一些事情?我在 .Net 文档中没有看到任何明显的内容。
【问题讨论】:
-
这是在 NTFS 上吗?文件是本地文件还是远程共享文件?我怀疑是 Dipose() 没有关闭 HANDLE,我认为您可能正在经历 SAMBA 开发人员所说的 Window 的“繁重的打开模式”(特别是如果在第二次打开时重试 500-1000 毫秒成功)。
-
它是 NTFS。如果我继续单击窗口上的保存按钮,最终它会保存。我正在处理错误,所以至少它不会崩溃。