记住这些
- Foreach
我无法绕过这个问题......这个代码在ASP.NET中是“线程安全的”吗?
public static bool IsCookieMissing()
{
foreach (string cookieKey in HttpContext.Current.Request.Cookies.AllKeys)
{
if (cookieKey.EndsWith("cookie_name"))
{
return false;
}
}
return true;
}
答案 0 :(得分:4)
从技术上讲,是的,这段代码是线程安全的。
HttpContext.Current返回与当前请求关联的上下文。虽然IIS可能使用多个线程来处理给定的请求(thread agility),但它不会并行运行这些线程(它只会在异步I / O期间切换线程)。
因此,只有一个线程可以同时访问HttpContext.Current.Request.Cookies
,并且您不需要在此处锁定。
答案 1 :(得分:2)
这段代码在ASP.NET中是“线程安全的”吗?
这取决于您的期望。它最有可能做你期望做的事情,因此它是“线程安全的”,除非你开始调用它自己的线程。 HttpContext.Current
是 Current HttpContext,此时调用它。您不需要关注与this question相关联的问题 - 您没有使用任何闭包。