ThreadLocal в сочетании с IHttpModule

Я играл в веб-проекте, где я в HttpModule хотел бы подготовить некоторые данные, которые различные классы на более позднем этапе должны работать.

Будет ли безопасно выставлять эти данные в общедоступном статическом доступном хранилище ThreadLocal?

то есть.

public static ThreadLocal<A> storage = new ThreadLocal<A>();

private void Application_BeginRequest(Object source, EventArgs )
{
    storage.Value = new A();
}

Мой первоначальный тест показывает, что код, выполняемый в моих контроллерах и т. Д., Фактически работает в том же потоке, в котором выполняется приведенный выше фрагмент из модуля.

то есть.

public ActionResult Index()
{
    var o = module.storage;
    if (o.IsValueCreated)
    {
        // WORX
    }
    return View();
}

Но я не смог найти никаких документов, которые бы гарантировали мне, что это гарантированное поведение.

Будет ли это работать? Или я должен получить это поведение по-другому?

(Само собой разумеется, что любые потоки, которые я раскручиваю сам в более позднем состоянии, потеряли бы связь с TLS.)

0 ответов

Другие вопросы по тегам