问题描述
要写一个多线程的程序,每个线程的工作内容是相同的,只是线程开始的时间不同,但同一时间可能有多个线程在运作,目前的情况是参数共享了,导致事件日志很混乱。不知道该怎么样处理,使得每个线程都是独立的,参数不会在不同的线程中相互传递。还请高手指点,谢谢!
解决方案
解决方案二:
囧,我见过的大多数多线程问题都是问如何通信,还是第一次看到不通信的你不用全局变量,这样他们就不能共用一个对象来导致数据错乱了,你让每个线程都有自己的调用对象就行了
解决方案三:
你写日志的时候lock来进行同步
解决方案四:
...目前的情况是参数共享了,导致事件日志很混乱...参数共享本身并没错,日志可以利用线程ID来区分。publicclassMySimpleLog{staticstrings_logfile=@"c:tempmy.log";staticobjects_Lock=newobject();publicstaticvoidWriteInfo(stringmsg){Write(msg,"I");}publicstaticvoidWriteDebug(stringmsg){Write(msg,"D");}publicstaticvoidWriteError(stringmsg){Write(msg,"E");}staticvoidWrite(stringmsg,stringcatagory){lock(s_Lock){intid=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));}}}publicclassUTest{staticvoidMain(){MySimpleLog.WriteInfo("Programstarted");}}
解决方案五:
支持楼上的