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

时间:2014-09-24 16:19:24

标签: c# multithreading filestream

using (FileStream fs =  File.Open(@"C:\logs\log1.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是否意味着线程安全以外的其他内容?

2 个答案:

答案 0 :(得分:1)

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

查看此问题的答案以获取更多信息:What is the fastest and safest way to append records to disk file in highly loaded .ashx http handler?

答案 1 :(得分:1)

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

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

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