我正在开发一个应用程序,该应用程序读取文件并在处理后将其保存回。在处理文件时,我必须将文件保存在流中。现在的问题是,我必须最小化文件的LOCK时间
解决方案是什么?
我建议您将文件保存在MemoryStream
中。向MemoryStream
写入时,数据将存储在内存中,而不是存储到文件系统中。处理完成后,您可以调用MemoryStream.WriteTo
将数据永久存储在文件系统中。这将最大限度地缩短锁定时间。
您可以使用允许其他进程访问该文件的ShareMode打开文件句柄。换句话说,您可以在不创建独占锁的情况下读取文件:
FileStream stream = File.Open("path", FileMode.Open, FileAccess.Read, FileShare.ReadWrite);