假设我有ria服务DomainDataService类:
public partial class SomeService : LinqToEntitiesDomainService<SomeEntities>
{
List<string> list = new List<string>();
public IQueryable<SomeEntity> GetSomeEntity()
{
list.Add("test");
...
}
}
有一个全局变量list
。显然可以同时调用GetSomeEntity
方法。问题:并行list
调用之间是GetSomeEntity
共享,即我是否必须使用锁保护它?
我想这同样适用于所有asp.net服务器端口味,例如Web服务(或不是?)。
答案 0 :(得分:2)
它应该取决于服务的上下文模式。您可以通过以下属性来控制:
[EnableClientAccess()]
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
public partial class SomeService : LinqToEntitiesDomainService<SomeEntities>
{
我认为默认选项为ConcurrencyMode.Single
。
从MSDN:“将ConcurrencyMode设置为Single指示系统一次将服务实例限制为一个执行线程,这使您无需处理线程问题”
因此,要回答您的问题,在您的服务调用之间不会共享全局list
(除非您是静态的)。