На самом деле StramWriter необходимо закрыть обработчик файла после записи в него чего-либо.Таким образом, поместив оператор Используя , вы передали эту задачу (Закрытие обработчика файла) Using
(это одно из преимуществ), так что если вы по какой-либо причине ждете в блоке Using
(вы добавилиa Console.ReadLine ()) Обработчик файла будет открываться до конца этого блока.
, если верны вышеуказанные коды:
class Program
{
static void Main(string[] args)
{
using (StreamWriter w = File.AppendText(@"C:\temp\log.txt"))
{
Log("Test1", w);
}
Console.ReadLine();
}
public static void Log(string logMessage, TextWriter w)
{
w.WriteLine(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString());
w.WriteLine(logMessage);
w.WriteLine("-----------------------------------------------------------------------");
}
}
должна быть небольшая вероятность параллелизма.но это может произойти, и вы можете использовать команду try catch и оператор while , чтобы убедиться, что ваш журнал был отправлен.
class Program
{
static void Main(string[] args)
{
bool WriteDone = false;
while(!WriteDone)
{
try
{
using (StreamWriter w = File.AppendText(@"C:\temp\log.txt"))
{
Log("Test1", w);
}
WriteDone = true;
}
catch
{
System.Threading.Thread.Sleep(1000); // Wait for 1s and try again
}
}
Console.ReadLine();
}
public static void Log(string logMessage, TextWriter w)
{
w.WriteLine(DateTime.Now.ToShortDateString() + " | " + DateTime.Now.ToLongTimeString());
w.WriteLine(logMessage);
w.WriteLine("-----------------------------------------------------------------------");
}
}