本人最近的项目中需要用到日志文件,由于对日志文件的读写可能比较频繁, 为了克服读写冲突,我们在设计中引入了Singleton模式。
首先,设计日志文件对象,包括Open和Save方法:

























再设计LogHandler类,用来读写日志文件:



























































LogHandler采用单例模式,保证了同一时间内只有一个线程对日志文件进行操作,读/写方法中分别用Lock互斥锁锁定这个唯一的对象,这样就避免了日志文件的读写冲突,具体可参看MSDN对于Lock关键字的介绍。当然,C#提供的ReaderWriterLock读写锁也可以解决这一问题。