Как упражнение в незанятом любопытстве больше всего на свете, рассмотрите следующий простой класс ведения журнала:
internal static class Logging
{
private static object threadlock;
static Logging()
{
threadlock = new object();
}
internal static void WriteLog(string message)
{
try
{
lock (threadlock)
{
File.AppendAllText(@"C:\logfile.log", message);
}
}
catch
{
...handle logging errors...
}
}
}
Требуется ли lock
вокруг File.AppendAllText(...)
или является ли этот метод неотъемлемо потокобезопасным по своей собственной реализации?
Поиск информации об этом дает много противоречивой информации, некоторые говорят "да", некоторые говорят "нет". MSDN ничего не говорит.