gpt4 book ai didi

C# 在复制文件时允许另一个进程独占锁定文件?

转载 作者:太空宇宙 更新时间:2023-11-03 13:59:11 24 4
gpt4 key购买 nike

我目前正在复制我们的 oracle 服务器 的存档文件,我要防止发生的是当我正在复制文件服务器时它会在尝试更新时出现错误文件。

一开始我试过

File.Copy(source, Destination, true);

但是这个方法好像是锁定了文件,服务器在日志中抛出一个错误:

OSD-04002: unable to open file
O/S-Error: (OS 32) The process cannot access the file because it is being used by another process.

我把方法改成

FileStream rStream = new FileStream(source, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);

但是当我尝试使用带有 FileShare 的测试程序打开文件时。现在它还会抛出一个错误,表明另一个进程正在锁定该文件。

一旦另一个进程想要访问/写入文件,是否可以放手或释放文件?

最佳答案

关于

var stream = System.IO.File.Open(
source, System.IO.FileMode.Open, System.IO.FileAccess.Read
);

这会锁定文件吗?

最好的解决方案是使用 VSS 来防止锁定(您的服务器是 Windows 框,对吧?)

  • 创建快照
  • 从快照复制文件
  • 删除快照

您可以使用 .NET 将其自动化

http://www.codeproject.com/Articles/22745/Volume-Shadow-Copies-from-NET

关于C# 在复制文件时允许另一个进程独占锁定文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11134559/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com