0
我有以下类:.Net是否在不同的请求中重复使用相同的线程?
public static class ThreadStaticContainer
{
[ThreadStatic]
private static Dictionary<string, string> _valueDictionary;
public static Dictionary<string, string> ValueDictionary
{
get { return _valueDictionary ?? (_valueDictionary = new Dictionary<string, string>()); }
}
}
,它被称为在我的MVC操作是这样的:
public ActionResult About()
{
ThreadStaticContainer.ValueDictionary.Add("1","1");
return View();
}
而且每隔一段时间我得到异常:
的项目已经添加了相同的密钥。
这令我感到惊讶,因为我认为每个请求都有一个新线程。但它的行为好像有时候一个请求会重用一个线程。
发生了什么事?
因此,每个请求都会得到一个线程,但该线程可能不是“新”且干净。该线程将来自线程池,可能以前由请求使用。真的吗? –
@Ev .:正确。 (除了用“通常”替换“可以”) – SLaks
我明白了。谢谢。如果我将数据存储在HttpContext中,我将得到更准确的1-1映射,请求和与请求相关的东西之间的关系更准确,因为它会在请求结束时销毁。正确? –