C# ria服务服务器端数据结构:线程之间是否共享
假设我有ria服务DomainDataService类:C# ria服务服务器端数据结构:线程之间是否共享,c#,asp.net,silverlight,wcf-ria-services,ria,C#,Asp.net,Silverlight,Wcf Ria Services,Ria,假设我有ria服务DomainDataService类: public partial class SomeService : LinqToEntitiesDomainService<SomeEntities> { List<string> list = new List<string>(); public IQueryable<SomeEntity> GetSomeEntity() { list.Add("t
public partial class SomeService : LinqToEntitiesDomainService<SomeEntities>
{
List<string> list = new List<string>();
public IQueryable<SomeEntity> GetSomeEntity()
{
list.Add("test");
...
}
}
公共部分类SomeService:LinqToEntitiesDomainService
{
列表=新列表();
公共IQueryable GetSomeEntity()
{
列表。添加(“测试”);
...
}
}
有一个全局变量列表
GetSomeEntity
方法显然可以同时调用。问题:并行GetSomeEntity
调用之间是否共享list
,即是否必须使用锁来保护它?
我想这同样适用于所有asp.net服务器端风格,例如web服务(是否?)。它应该取决于服务的上下文模式。您可以通过一个属性进行控制:
[EnableClientAccess()]
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)]
public partial class SomeService : LinqToEntitiesDomainService<SomeEntities>
{
[EnableClientAccess()]
[ServiceBehavior(ConcurrencyMode=ConcurrencyMode.Multiple)]
公共部分类SomeService:LinqToEntitiesDomainService
{
我相信默认选项是ConcurrencyMode.Single
From:“将ConcurrencyMode设置为Single会指示系统将服务实例限制为一次执行一个线程,从而使您不必处理线程问题”
因此,为了回答您的问题,全局列表
不会在您的服务调用之间共享(除非您的调用是静态的)