查看解释如何在应用程序级别保存值的msdn link,我理解应该使用System.Web.HttpContext.Current.Application.Lock();
来锁定应用程序状态,以防止无效数据(导致它"可以可以同时被多个线程访问")。
我的问题是 - 我还应该在阅读时锁定应用程序状态吗?或者仅仅在写作时才能锁定它。
提前致谢。
答案 0 :(得分:1)
是的,你应该。
当您拥有共享资源时,锁定会保持对象的完整性 如果您只对写入进行锁定,则有一种情况是一个线程正在向资源写入内容,然后另一个线程尝试读取相同的资源。
因为读取没有被锁定,它可以读取中途烹饪的数据 或者,如果资源是集合,则在插入项目的过程中,集合结构的整体完整性可能无效。
由于在另一个线程中进行了更改,集合迭代器变为无效,集合上的循环将抛出异常。