只是一个普遍的问题,我正在开发一个ASP.NET MVC 3 Web应用程序,它使用Stream语句中的Stream Reader从配置文件中读取自动处理,如下所示:
using (StreamReader sr = new StreamReader(filepath))
{
}
我担心的是,当多个用户正在运行应用程序时,当应用程序的多个实例从配置文件中读取值时,将发生死锁。我的问题是,使用Stream Reader类时死锁是一个问题吗?直觉上我想不会,因为我假设Stream Reader以只读模式打开文件,并且没有外部进程写入配置文件而不是手动编辑。我只是想确定这是否会成为一个问题。任何见解都表示赞赏。
答案 0 :(得分:8)
不,不要担心。不会发生死锁。您正在打开文件进行阅读。所以你可以有并发读者。但是,如果您在代码的其他位置写入此文件,则会出现异常。但没有僵局。如果要将读者和编写者正确地同步到某些共享资源(如文件),可以使用ReaderWriterLockSlim类。如果您从未写过文件(来自同一个流程或其他流程),那么您没问题。但是如果你从不写文件,为了避免每次都读取和解析这个文件,你应该只读一次并将其缓存在一些内存结构中。例如,.NET应用程序配置系统的工作原理。它在运行应用程序时读取并解析app / web.config,然后将其存储到内存中以便更快地访问。但当然一切都取决于你的具体情况。我担心的是,当多个用户运行应用程序时,a 当应用程序的多个实例是时,将发生死锁 从配置文件中读取值