本人最近的項目中需要用到日誌文件,由於對日誌文件的讀寫可能比較頻繁, 爲了克服讀寫衝突,我們在設計中引入了Singleton模式。
首先,設計日誌文件對象,包括Open和Save方法:
再設計LogHandler類,用來讀寫日誌文件:
LogHandler採用單例模式,保證了同一時間內只有一個線程對日誌文件進行操作,讀/寫方法中分別用Lock互斥鎖鎖定這個唯一的對象,這樣就避免了日誌文件的讀寫衝突,具體可參看MSDN對於Lock關鍵字的介紹。當然,C#提供的ReaderWriterLock讀寫鎖也可以解決這一問題。