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.)