How do I make a static class thread-safe? How do I make a static class thread-safe? wpf wpf

How do I make a static class thread-safe?


public static class Logger{    private static readonly string LOG_FILENAME = "logfile.txt";    private static readonly string LOG_FOLDER = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "App name");    private static readonly string LOG_FULLPATH = System.IO.Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData), "App name", LOG_FILENAME);    private static Object theLock=new Object();    public static void LogMessageToFile(string msg)    {        msg = string.Format("{0:G}: {1}{2}", DateTime.Now, msg, Environment.NewLine);        lock (theLock)        {            File.AppendAllText(LOG_FULLPATH, msg);        }    }}


In your LogMessageToFile method, you need a lock to prevent multi-thread accessing:

private static Object _mylock = new Object();public static void LogMessageToFile(string msg){    lock(_mylock)    {       msg = string.Format("{0:G}: {1}{2}", DateTime.Now, msg, Environment.NewLine);       File.AppendAllText(LOG_FULLPATH, msg);    }}