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映射,請求和與請求相關的東西之間的關係更準確,因爲它會在請求結束時銷燬。正確? –