关于[ThreadStatic()] C#
问题描述:
是什么意思[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;
}
}
答
指示静态字段的值对于每个线程是唯一的。
在您的代码中_Context
是静态的,但它对于每个线程都是不同的。
如果您有更多本机编程的背景知识,请将其视为Thread Local Storage的半当量。
我不会去想asp.net点是完全准确。一个线程可以在请求之间重复使用,因此在线程本地存储每个请求数据不是100%安全的。每个请求存储信息有更简单和更安全的方法。 –
@詹姆斯 - 谢谢 - 你是对的,线程被重用;但是1个线程一次不会处理多个请求,因为它只是从线程池中提取它们。为了避免含糊不清,我删除了这个句子。 – vcsjones