我們正在監控寫入XML Manifest的定製應用程序(其源代碼不受我們控制)的進度。有時,應用程序由於無法寫入清單文件而卡住了。儘管我們通過使用File.Close顯式關閉文件句柄並在Using Blocks中創建文件變量來覆蓋我們的跟蹤。但不知何故,它一直在發生。 (我們的應用程序是多線程的,最多有三個線程可能正在訪問該文件。) 另一個有趣的事情是,他們的應用程序在三個不同的事件(添加項目,刪除項目,完成項目)更新此清單,但我們只有一個事件(項目完成)。我的代碼如下如何避免文件阻塞
using (var st = new FileStream(MenifestPath, FileMode.Open, FileAccess.Read))
{
using (TextReader r = new StreamReader(st))
{
var xml = r.ReadToEnd();
r.Close();
st.Close();
//................ Rest of our operations
}
}
希望以下鏈接有幫助。 http://stackoverflow.com/questions/119548/problem-in-writing-to-single-file-in-web-service-in-net – pradeeptp 2008-10-20 11:31:38
正確的做法 - 使用鎖定,以便線程不嘗試同時訪問文件。當我有多個線程記錄到同一個文件時爲我工作。創建一個庫來管理訪問文件,你是金。 – ScottCher 2008-10-20 13:44:30