通过一个进程锁定文件

Rad*_*lav 2 .net c# process file-locking

我有一个应用程序,它同时运行多个进程来读取和写入文件.

private Process PrepareProcess(string workingDirName, string scriptPath, string[] args) {
        var process = new Process {
            StartInfo = {
                WorkingDirectory = workingDirName,
                FileName = scriptPath,
                Arguments = string.Format(string.Join(" ", args))
            }
        };
        return process;
    }
Run Code Online (Sandbox Code Playgroud)

我需要确保文件只能由一个进程同时修改.怎么做?

该进程将运行外部脚本,该脚本将修改文件.我无法管理如何打开文件.我需要管理运行过程.

谢谢!

Sri*_*vel 6

您可以使用"命名互斥锁".它可以帮助你说"嘿等等,我正在处理该文件!".您可以等待或忽略该文件.

看看Mutex课程

另外值得注意的是,默认情况下,如果你打开一个文件,那FileShareNone意味着在我关闭文件之前不与任何人共享访问权限.因此,当尝试访问另一个进程时它将失败.您无法同时修改它.为了防止这种失败和处理异常而且所有使用"Mutex"都是一种优雅的方式.