锁定AppendAllText与TextWriter

枕上从妨一夜睡,灯前读尽十年诗。这篇文章主要讲述锁定AppendAllText与TextWriter相关的知识,希望能为你提供帮助。
关于防止“已经使用”错误,我想问一下,如果多个客户端多次调用第一个代码片段可能会有危险吗?或者两个代码块是否安全?
我问,因为第二个codenippet调用了一个close方法,该方法也进行了一个听起来更安全的配置。

//FIRST lock (_myLock) { File.AppendAllText(_filePath, text); }//SECOND lock (_myLock) { TextWriter tw = new StreamWriter(_filePath, true); tw.Write(text); tw.Close(); }

答案它们都是一样的。 File.AppendAllText也打电话给Dispose。
private static void InternalAppendAllText(string path, string contents, Encoding encoding) { using (StreamWriter writer = new StreamWriter(path, true, encoding)) { writer.Write(contents); } }

另一答案两者都同样安全。
因为你已经应用了Lock,所以即使从多个客户端调用它,只有一个线程将在特定时间执行所以它不危险而不是第一个选项更简单
正如MSDN所说的AppendAllText方法
The file handle is guaranteed to be closed by this method
所以在第一段代码中.Net已经在方法2中做了额外的工作
另一答案我认为你在后面做的事情在调用File.AppendAllText时已经在内部处理了
【锁定AppendAllText与TextWriter】同样在这里回答File.AppendAllText vs StreamWriter

    推荐阅读