ASP.Net静态对象

时间:2009-06-14 18:26:03

标签: asp.net multithreading generics concurrency static

我正在尝试缓存我从数据库中检索到的一些信息。我决定使用静态List<>会员存储信息。根据我对List<>的经验我知道在多线程应用程序中,我需要使用lock语句保护对它的访问。我是否以完全相同的方式处理我的Asp.Net代码中的任何代码?锁定语句是否仍然有效?

3 个答案:

答案 0 :(得分:5)

List方法的锁定语句肯定会有效,但如果您需要在ASP.NET应用程序中使用缓存功能,我建议您使用适合此功能的Cache类。

答案 1 :(得分:2)

锁定可行。请注意,如果有多个工作进程,您将最终获得该列表的多个版本。他们每个人都会受到自己锁定的保护。

这里真正存在的一个危险是,如果您无法释放锁定,整个Web应用程序可能会挂起。在执行ASP.NET页面时,用户可能会断开连接;所以要小心在意外时刻抛出的异常。

答案 2 :(得分:0)

这取决于您是否要修改列表。以下是对此主题的一个很好的讨论:Do i need a lock on a list? C#