2011-08-25 45 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