【问题标题】:regarding [ThreadStatic()] c#关于 [ThreadStatic()] c#
【发布时间】:2011-08-25 19:40:26
【问题描述】:

[ThreadStatic()]是什么意思

我得到了一段代码,我找到了[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;
}
}

【问题讨论】:

    标签: c# asp.net


    【解决方案1】:
    【解决方案2】:

    来自documentation

    表示静态字段的值对于每个线程都是唯一的。

    在您的代码中,_Context 是静态的,但每个线程都不同。

    如果您有更多本机编程的背景,请将这些视为线程本地存储的半等价物。

    【讨论】:

    • 我认为关于 asp.net 的观点并不完全准确。线程可以在请求之间重用,因此将每个请求的数据存储在本地线程中并不是 100% 安全的。有更简单、更安全的方式来存储每个请求的信息。
    • @James - 谢谢 - 你是对的,线程被重复使用;但是 1 个线程一次不会处理多个请求,因为它只是从线程池中提取它们。我删除了这句话以避免任何歧义。
    猜你喜欢
    • 2010-09-21
    • 1970-01-01
    • 2016-08-28
    • 1970-01-01
    • 2013-08-22
    • 1970-01-01
    • 2020-11-10
    • 1970-01-01
    相关资源
    最近更新 更多