私は答えがどこかにあるに違いないことを知っています.他の多くの質問とMSDN自体の両方からの提案を適用しましたが、おそらくここで何かを見落としています.
これは私の方法です。出力をファイルにダンプするために使用します。わかりやすくするために、オブジェクト宣言をロックします。
private static Object fileLock = new Object();
private static void WriteToFile(string msg, bool WriteLine)
{
lock (fileLock)
{
msg = DateTime.Now.ToShortTimeString() + " - " + msg;
FileInfo F = new FileInfo("dump.txt");
using (StreamWriter writer = F.Exists ? F.AppendText() : F.CreateText()) //<--THIS LINE THROWS
{
if (WriteLine)
writer.WriteLine(msg);
else
writer.Write(msg);
}
}
}
using
質問:上記の行IOException
で、メソッドを 2 回目に呼び出したときに、別のプロセスがファイルを使用しているという不平を言うのはなぜですか?
私は自分のコードの周りでこのように呼んでいます:
Console.WriteLine(something)
#if(DEBUG)
Extensions.WriteToFile(something,true);
#endif
繰り返しますが、これは些細な問題であり、他の誰かがこのような質問をして正しい答えを得ていると確信していますが、私はそれを掘り下げることができません.
アップデート
オブジェクトをリファクタリングしてメソッドFileInfo
に切り替えると、コードが正常に機能しました。File.XXX
とにかく、問題は解決したように見えます。