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();
}

私は交通量の多いサイトを持っていませんが、時々2人が同時にペイパル支払いを行います。これは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 に答える