FileShare.ReadWrite 是否意味着对 C# 中的文件进行线程安全的写入?


using (FileStream fs =  File.Open(@"C:logslog1.txt",FileMode.Append,
              FileAccess.Write, FileShare.ReadWrite))
{
    using (StreamWriter w = new StreamWriter(fs))
    {
        w.WriteLine(logMessage);
        w.Flush();
        isSuccessful = true;
    }
} 

在上面的代码中,我正在实例化一个FileStream对象,以便该文件在FileShare.ReadWrite模式下打开。

我的问题:这是否意味着将一行写入打开的文件的代码将是线程安全的,或者 FileShare.ReadWrite 意味着线程安全以外的其他内容?

不,它只允许多个进程写入文件。如果您希望 File.Write 操作是线程安全的,您仍然需要在 File.Write 操作上实现一些锁定机制。

有关详细信息,请查看此问题的答案:在高负载的 .ashx http 处理程序中将记录附加到磁盘文件的最快、最安全的方法是什么?

FileShare

线程安全无关。FileAccessFileShare 的值仅在打开文件时使用。他们可能会导致失败,他们控制着你和其他人拥有的权利。

除此之外,当涉及多个进程和线程时,行为没有变化。

单个 FileStream 实例不是线程安全的。

最新更新