担心 C# StreamReader 的死锁

本文关键字:死锁 StreamReader 担心 | 更新日期: 2023-09-27 18:31:13

只是一个一般性问题,我正在开发一个 ASP.NET MVC 3 Web 应用程序,该应用程序使用 Using 语句中的流读取器从配置文件中读取以进行自动处置,如下所示:

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

我担心的是,当多个用户运行应用程序时,当应用程序的多个实例从配置文件中读取值时,将发生死锁。 我的问题是,使用流阅读器类时死锁是一个问题吗? 直觉上我认为不会,因为我假设流读取器以只读模式打开文件,并且除了手动编辑之外没有外部进程写入配置文件。 我只是想确定这是否是一个问题。 任何见解都值得赞赏。

担心 C# StreamReader 的死锁

我担心的是,当多个用户运行应用程序时,一个 当应用程序的多个实例 从配置文件中读取值

不,别担心。不会发生死锁。您正在打开文件进行阅读。因此,您可以有并发读取器。但是,如果您在代码的其他位置写入此文件,则会出现异常。但没有僵局。如果要将读取器和编写器正确同步到某些共享资源(如文件),则可以使用 ReaderWriterLockSlim 类。如果您从不写入文件(来自同一进程或其他进程),那么您没问题。但是,如果您从不写入该文件,为了避免每次都读取和解析此文件,则应只读取一次并将其缓存在某种内存结构中。例如,这就是 .NET 应用程序配置系统的工作方式。它在运行应用程序时读取并解析一次 app/web.config,然后将其存储到内存中以便更快地访问。但是,当然,一切都取决于您的确切情况。