1

阅读文档时,我认为这段代码会以线程安全的方式将日志写入文件。

using (TextWriter syncTextWriter = TextWriter.Synchronized(new StreamWriter(Server.MapPath(String.Format("~/App_Data/PaypalIPN/IPNlog_{0:yyyyMM}.txt", DateTime.Now)), true)))
{
  syncTextWriter.WriteLine(line);
  syncTextWriter.Close();
}

我没有高流量的网站,但时不时有两个人同时进行paypal支付,这就是IPN支付日志。尽管介绍了TextWriter.Synchronized我仍然得到奇怪的例外:

System.IO.IOException: The process cannot access the file ... 
...because it is being used by another process.

我哪里出错了?

4

1 回答 1

3

你每次都在创造一个新的作家。为传递的实例Synchronized创建线程安全包装器,因此您的调用不安全。

于 2012-10-10T11:03:47.260 回答