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是否意味着线程安全以外的其他内容?
答案 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
与线程安全无关。 FileAccess
和FileShare
的值仅在文件打开时使用。他们可能会导致失败,他们会控制你和他人拥有的权利。
除此之外,涉及多个进程和线程时的行为没有变化。
单个FileStream
实例不是线程安全的。