3

牢记这些

- HttpContext.Current

-前锋

我很难解决这个问题......这段代码在 ASP.NET 中是“线程安全的”吗?

public static bool IsCookieMissing()
{
    foreach (string cookieKey in HttpContext.Current.Request.Cookies.AllKeys)
    {
        if (cookieKey.EndsWith("cookie_name"))
        {
            return false;
        }
    }
    return true;
}
4

2 回答 2

4

从技术上讲,是的,这段代码是线程安全的。

HttpContext.Current返回与当前请求关联的上下文。尽管 IIS 可能使用多个线程来处理给定的请求(线程敏捷性),但它不会并行运行这些线程(它只会在异步 I/O 期间切换线程)。

因此,不会有超过一个线程HttpContext.Current.Request.Cookies同时访问,这里不需要加锁。

于 2012-06-25T14:46:03.087 回答
2

这段代码在 ASP.NET 中是“线程安全的”吗?

这取决于你期望它做什么。它很可能会执行您期望的操作,因此它是“线程安全的”,除非您正在启动自己的线程来调用它。是调用它时HttpContext.Current当前HttpContext。不需要您对链接到的这个问题中的问题的关注- 您没有使用任何闭包。

于 2012-06-25T14:44:12.567 回答