在開發(fā)程序的過程中,難免少不了寫入錯誤日志這個關(guān)鍵功能。實現(xiàn)這個功能,可以選擇使用第三方日志插件,也可以選擇使用數(shù)據(jù)庫,還可以自己寫個簡單的方法把錯誤信息記錄到日志文件。

選擇最后一種方法實現(xiàn)的時候,若對文件操作與線程同步不熟悉,問題就有可能出現(xiàn)了,因為同一個文件并不允許多個線程同時寫入,否則會提示“文件正在由另一進(jìn)程使用,因此該進(jìn)程無法訪問此文件”。

 

這是文件的并發(fā)寫入問題,就需要用到線程同步。而微軟也給線程同步提供了一些相關(guān)的類可以達(dá)到這樣的目的,本文使用到的System.Threading.ReaderWriterLockSlim 便是其中之一。

該類用于管理資源訪問的鎖定狀態(tài),可實現(xiàn)多線程讀取或進(jìn)行獨占式寫入訪問。利用這個類,我們就可以避免在同一時間段內(nèi)多線程同時寫入一個文件而導(dǎo)致的并發(fā)寫入問題。

 

讀寫鎖是以 ReaderWriterLockSlim 對象作為鎖管理資源的,不同的 ReaderWriterLockSlim 對象中鎖定