.NET中的Singleton是否在所有会话中共享?

ner*_*son 3 .net c# asp.net singleton

我正在创建一个单例来容纳linqtoumbraco datacontext,该上下文从缓存的xml文件中提取数据。

我了解如何创建单例类并使用锁来防止新线程创建新实例。

我不了解多线程以及.NET会话如何工作得很好,并且想知道是否如上所述创建了singleton,在应用程序池仍然存在的情况下,访问我的Web应用程序的所有用户都将共享它吗?换句话说,单例不仅仅是一个用户会话的单例,而是所有会话的单例?

谢谢

Ars*_*yan 5

是的,将为整个ASP.Net应用程序共享静态成员

执行此操作的另一种方法是在HttpContext.Current.Application中创建和分配datacontext,并且可以在任何会话中从任何位置获取它

但是想一想,是否所有客户端仅从xml文件读取?如果一位客户在另一位写作的同时阅读该怎么办?还是datacontext支持多线程读取?在以静态方式使用该数据上下文之前,您应该回答所有这些问题

  • 在单个工作进程中,这是正确的。但是,单个应用程序可以使用多个工作进程,在这种情况下,每个应用程序都有其自己的单例实例。 (2认同)