C# 这个html助手是线程安全的吗?

C# 这个html助手是线程安全的吗?,c#,asp.net-mvc-3,thread-safety,C#,Asp.net Mvc 3,Thread Safety,我想知道这个链接上被引用为可接受答案的代码是否是线程安全的。我的意思是不支持多线程。我只是不希望输出跨用户页面请求。 我会遇到这样一种情况:对一个页面的许多请求可能会跨越样式和脚本 如果您了解MVC,在呈现视图时调用add方法,并将结果呈现到布局(母版页)中,这可能会有所帮助 当前解决方案(请告知是否需要改进) 谢谢嗯。。。。在我看来不是这样的;p HtmlHelper具有一些实例属性,特别是ViewContext和ViewData(通过ViewDataContainer)等。将其放置在静态的

我想知道这个链接上被引用为可接受答案的代码是否是线程安全的。我的意思是不支持多线程。我只是不希望输出跨用户页面请求。

我会遇到这样一种情况:对一个页面的许多请求可能会跨越样式和脚本

如果您了解MVC,在呈现视图时调用add方法,并将结果呈现到布局(母版页)中,这可能会有所帮助

当前解决方案(请告知是否需要改进)


谢谢

嗯。。。。在我看来不是这样的;p

HtmlHelper
具有一些实例属性,特别是
ViewContext
ViewData
(通过
ViewDataContainer
)等。将其放置在
静态的任何位置都是一个糟糕的想法


对于正在进行的基本代码,您可能会侥幸逃脱,但是:在我看来,这仍然是一个非常糟糕的想法。很好的发现。

@Konrad许多请求使用相同的
AppDomain
原始已更新。我非常喜欢此解决方案。它能成为线程安全的吗?@Valams特别是,助手的ViewContext有一个HttpContext;从这里你可以储存任何东西。这就是我在这里储存的东西。非常感谢!我现在正在研究如何做,因为我没有太多的曝光。@Valamas,@Marc很抱歉回复太晚(我在度假)。几周前,我们意识到代码不是线程安全的。因此,我更改了静态/单例实现,并将实际实例存储在当前HttpContext中。同时,我也开始做一个简单的项目来处理资产。你可以看看这里:这很像一个实验,它是我们在我的工作场所使用的当前解决方案的基础。让我知道你是怎么想的。更新这个问题,使被接受的答案不再有意义,这并没有太大帮助。。。
public static MyCompanyHtmlHelpers GetInstance(HtmlHelper htmlHelper)
{
    MyCompanyHtmlHelpers _instance;
    if (htmlHelper.ViewData["SectionHelper"] == null)
    {
        _instance = new MyCompanyHtmlHelpers();
        htmlHelper.ViewData["SectionHelper"] = _instance;
    }
    else
        _instance = htmlHelper.ViewData["SectionHelper"] as MyCompanyHtmlHelpers;

    _instance.SetHtmlHelper(htmlHelper);

    return _instance;
}