C# 静态方法线程安全

C# 静态方法线程安全,c#,.net,asp.net-mvc,static,thread-safety,C#,.net,Asp.net Mvc,Static,Thread Safety,假设当用户登录到我的mvc应用程序时,我调用以下方法: public static bool IsValidBrowser() { var browser = HttpContext.Current.Request.Browser; if (browser.Browser == "IE") { if (browser.MajorVersion < 10) { return false; } } ret

假设当用户登录到我的mvc应用程序时,我调用以下方法:

public static bool IsValidBrowser()
{
    var browser = HttpContext.Current.Request.Browser;

    if (browser.Browser == "IE") {
        if (browser.MajorVersion < 10) {
            return false;
        }
    }
    return true;
}

HttpContext.Current本身是一个静态方法,它将从当前线程返回上下文,因此您无需担心。

HttpContext.Current本身是一个静态方法,它将从当前线程返回上下文,因此您无需担心

这个方法是线程安全的吗

public ActionResult Login () 
{
    bool validBrowser = IsValidBrowser(HttpContext.Current.Request.Browser);
}

public static bool IsValidBrowser(HttpBrowserCapabilities browser)
{
    if (browser.Browser == "IE") {
        if (browser.MajorVersion < 10) {
            return false;
        }
    }
    return true;
}
是的,正如@DoctorMick已经解释的那样,此方法是线程安全的。再补充一点

微软的 框架类库(FCL)保证所有静态方法都是线程安全的。 FCL必须这样做 内部原因是生产不同组件的多家公司无法 协调单个锁以仲裁对资源的访问

所以,如果您使用FCL静态方法,就不需要考虑线程安全性。例如(控制台类、数学类等)

这个方法是线程安全的吗

public ActionResult Login () 
{
    bool validBrowser = IsValidBrowser(HttpContext.Current.Request.Browser);
}

public static bool IsValidBrowser(HttpBrowserCapabilities browser)
{
    if (browser.Browser == "IE") {
        if (browser.MajorVersion < 10) {
            return false;
        }
    }
    return true;
}
是的,正如@DoctorMick已经解释的那样,此方法是线程安全的。再补充一点

微软的 框架类库(FCL)保证所有静态方法都是线程安全的。 FCL必须这样做 内部原因是生产不同组件的多家公司无法 协调单个锁以仲裁对资源的访问

所以,如果您使用FCL静态方法,就不需要考虑线程安全性。例如(控制台类、数学类等)