簡體   English   中英

關注C#StreamReader的死鎖問題

[英]Concerned about deadlocks with C# StreamReader

只是一個普遍的問題,我正在開發一個ASP.NET MVC 3 Web應用程序,它使用Using語句中的Stream Reader從配置文件中讀取,以進行自動處理,如下所示:

using (StreamReader sr = new StreamReader(filepath))
{

}

我擔心的是,當多個用戶正在運行應用程序時,當應用程序的多個實例從配置文件中讀取值時,將發生死鎖。 我的問題是,使用Stream Reader類時死鎖是一個問題嗎? 直覺上我想不會,因為我假設Stream Reader以只讀模式打開文件,並且沒有外部進程寫入配置文件而不是手動編輯。 我只是想確定這是否會成為一個問題。 任何見解都表示贊賞。

我擔心的是,當多個用戶正在運行應用程序時,當應用程序的多個實例從配置文件中讀取值時,將發生死鎖

不,不要擔心。 不會發生死鎖。 您正在打開文件進行閱讀。 所以你可以有並發讀者。 但是,如果您在代碼的其他位置寫入此文件,則會出現異常。 但沒有僵局。 如果要將讀者和編寫者正確地同步到某些共享資源(如文件),可以使用ReaderWriterLockSlim類。 如果您從未寫過文件(來自同一個流程或其他流程),那么您沒問題。 但是如果你從不寫文件,為了避免每次都讀取和解析這個文件,你應該只讀一次並將其緩存在一些內存結構中。 例如,.NET應用程序配置系統的工作原理。 它在運行應用程序時讀取並解析app / web.config,然后將其存儲到內存中以便更快地訪問。 但當然一切都取決於你的具體情況。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM