Я знаю, что ответ должен * где-то быть , я применил предложения как по многим другим вопросам, так и от самого 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
с жалобой, что другой процесс использует файл во второй раз, когда я вызываю метод?
Я называю это так вокруг моего кода:
Console.WriteLine(something)
#if(DEBUG)
Extensions.WriteToFile(something,true);
#endif
Опять же, я уверен, это тривиальная проблема, и кто-то еще спросил что-то вроде этого, получая правильный ответ, но я не могу выкопать его.
UPDATE
Рефакторинг объекта FileInfo
и переключение на методы File.XXX
сделали код работающим нормально. Мне все еще интересно, в чем проблема, в любом случае проблема выглядит решенной.