你写日志的时候lock来进行同步

解决方案 »

  1.   

    ...目前的情况是参数共享了,导致事件日志很混乱...
    参数共享本身并没错,日志可以利用线程ID来区分。
        public class MySimpleLog
        {
            static string s_logfile = @"c:\temp\my.log";
            static object s_Lock = new object();        public static void WriteInfo(string msg)
            {
                Write(msg, "I");
            }
            public static void WriteDebug(string msg)
            {
                Write(msg, "D");
            }
            public static void WriteError(string msg)
            {
                Write(msg, "E");
            }
            static void Write(string msg, string catagory)
            {
                lock (s_Lock)
                {
                    int id = System.Threading.Thread.CurrentThread.ManagedThreadId;                     //<-----
                    System.IO.File.AppendAllText(s_logfile, string.Format("[{0}{1,3}{2}] {3}{4}", 
                        DateTime.Now.ToString("HH:MM:ss"), 
                        id, 
                        catagory, 
                        msg,
                        Environment.NewLine)
                        );
                }
            }
        }
        
        public class UTest
        {
            static void Main()
            {
                MySimpleLog.WriteInfo("Program started");
            }
        }