2011-08-25 38 views
1

是什麼意思[ThreadStatic()]關於[ThreadStatic()] C#

我有一段代碼,我發現[ThreadStatic()] 目前使用的是什麼意思....當使用[ThreadStatic()]

public class Context 
{ 
[ThreadStatic()] 
private static Context _Context = null; 

private HttpContext _HttpContext = null; 

public Context() 
{ 
    _HttpContext = HttpContext.Current; 
} 

public static Context Current 
{ 
    if(_Context == null || 
     _HttpContext != _HttpContext.Current) 
    { 
     _Context = new Context(); 
    } 
    return _Context; 
} 
} 

回答

2

documentation

指示靜態字段的值對於每個線程是唯一的。

在您的代碼中_Context是靜態的,但它對於每個線程都是不同的。

如果您有更多本機編程的背景知識,請將其視爲Thread Local Storage的半當量。

+1

我不會去想asp.net點是完全準確。一個線程可以在請求之間重複使用,因此在線程本地存儲每個請求數據不是100%安全的。每個請求存儲信息有更簡單和更安全的方法。 –

+0

@詹姆斯 - 謝謝 - 你是對的,線程被重用;但是1個線程一次不會處理多個請求,因爲它只是從線程池中提取它們。爲了避免含糊不清,我刪除了這個句子。 – vcsjones