2013-08-19 60 views
3

之間共享。因此,假設我已經RIA服務DomainDataService類:RIA Services的服務器端數據結構:這是線程

public partial class SomeService : LinqToEntitiesDomainService<SomeEntities> 
{ 
    List<string> list = new List<string>(); 
    public IQueryable<SomeEntity> GetSomeEntity() 
    { 
     list.Add("test"); 
     ... 
    } 
} 

有一個全局變量listGetSomeEntity方法顯然可以同時調用。問題:平行GetSomeEntity調用之間共享list,即做我有鎖來保護它? 我想這同樣適用於所有的asp.net服務器端的口味,例如Web服務(或不?)。

回答

2

應該依賴於上下文模式的服務。您可以通過屬性控制此:

[EnableClientAccess()] 
[ServiceBehavior(ConcurrencyMode = ConcurrencyMode.Multiple)] 
public partial class SomeService : LinqToEntitiesDomainService<SomeEntities> 
{ 

我相信,默認選項爲ConcurrencyMode.Single

MSDN:「設置ConcurrencyMode爲單指示系統在時間限制執行一個線程的服務的情況下,這樣可以讓您與線程處理問題」

因此,要回答你的問題,全球list不會在您的服務調用之間共享(除非您使其爲靜態)。