2013-06-19 168 views
-5

按解決方案張貼在下面的文章中,我已經創建了形式寫入日誌條目時,但是我得到file in use例外讀取日誌文件如何讀取日誌從日誌文件,因爲它發生

BackgroundWorker & Timer, reading only new lines of a log file?

幫助

+0

_「help」_ - 是你的問題嗎?你是否可以證明你明白了這個問題,你知道_something_關於如何打開,鎖定,讀寫文件的工作原理,你是否已經將問題指向了一個可重複的測試用例,或者你只是想修復該死的代碼? – CodeCaster

+0

你是指「閱讀」日誌條目嗎? – DonBoitnott

+0

@Nitin你需要正確處理streamReader或fileStream。 – Praveen

回答

1

當我做這樣的文件訪問/操縱我通常照顧兩件事情。

首先,閱讀中,我使用下面的代碼(見FileShare enumeration):

using (Stream s = File.Open(path, FileMode.OpenOrCreate, FileAccess.Read, FileShare.ReadWrite)) { ... } 

其次,我平時寫一個while循環,打開文件進行讀/寫這樣的(代碼草案):

int tries=0; 
while (tries < 10) { 
    try { 
     // try to open file for your operation 
     break; 
    } catch (IOException) { 
     tries++; 
     Thread.Sleep(200); 
    } 
} 

編輯:意外地,我用第一次在我的答案FileShare.Read而不是更合適的FileShare.ReadWrite。現在我已經糾正它。

+0

實際上可以將文件同時寫入和讀取。如[tail](http://en.wikipedia.org/wiki/Tail_(Unix))所示,用於查看正在寫入日誌的日誌,這似乎是OP試圖複製的內容。 – Clafou

+0

我只是想給出一些一般的想法。 –