Можете ли вы просто добавить файл, а не отслеживать, где вы находитесь?
Object mLogLock = new Object(); //to make logging thread safe
string mLogFile = ""; //set your log location
string mLogDirectory = "";
public void HandleMessage(string inMessage)
{
lock (mLogLock)
{
if (!System.IO.Directory.Exists(mLogDirectory ))
{
System.IO.Directory.CreateDirectory(mLogDirectory );
}
String theMessage = DateTime.Now.ToString("s");
if (inMessage != null)
theMessage += " : " + inMessage;
StreamWriter sw = new StreamWriter(mLogFile, true);
sw.WriteLine(theMessage );
sw.Dispose();
sw.Close();
}
}
В противном случае, если ваш писатель пишет в одной точке и что-то еще потребляет, и у вас нет блокировки, тогда ваша программа будет повреждать ваши журналы. Это даже не вопрос. Вы можете попытаться заблокировать ваш файл, открыв файл для монопольного чтения / записи любым пользователем, который хочет прочитать или записать его, но тогда другой код вызовет исключения, когда он не сможет его прочитать.
Если файл журнала находится в той же программе, вы можете просто хранить всю информацию в одном большом потоке, таком как MemoryStream, и использовать StreamWriter, как указано выше (или вместе с ним) для MemoryStream. Затем ваши читатели и писатели могут заблокировать MemoryStream, а не сам файл. Это поможет?