C# 我如何使我的代码是线程安全的还是线程安全的?

C# 我如何使我的代码是线程安全的还是线程安全的?,c#,multithreading,thread-safety,C#,Multithreading,Thread Safety,我在上一篇堆栈溢出文章中读到如下内容:“如果您的静态方法不更改任何成员变量,也不调用其参数上的变异方法,那么它是可重入的,因此是线程安全的”,我相信我的代码遵循这一点,但我只是在寻求一些确认。下面是我的代码 public static class Extensions { private static Logger _log = LogManager.GetLogger("PortalLog"); public static void NLoglogger(Exception e

我在上一篇堆栈溢出文章中读到如下内容:“如果您的静态方法不更改任何成员变量,也不调用其参数上的变异方法,那么它是可重入的,因此是线程安全的”,我相信我的代码遵循这一点,但我只是在寻求一些确认。下面是我的代码

public static class Extensions
{
    private static Logger _log = LogManager.GetLogger("PortalLog");
    public static void NLoglogger(Exception ex, string loginId)
   {
        if (ex.InnerException == null)
        {
            LogEventInfo errorEvent = new LogEventInfo(LogLevel.Error, "PortalLog", ex.Message);
            errorEvent.Properties["loginid"] = loginId ;
            _log.Log(errorEvent);
        }
        else
        {
            LogEventInfo errorEvent = new LogEventInfo(LogLevel.Error, "PortalLog", ex.Message + "Inner Message: " + ex.InnerException.Message);
            errorEvent.Properties["loginid"] = loginId;
            _log.Log(errorEvent);
        }

    }
}

嗯,您的代码使用了一些
Logger
类,因此您需要知道那里发生的一切是否都是线程安全的是的,我的NLog是线程安全的。您的代码是线程安全的,但Logger可能不是。您无法控制它,但这可以在其文档中描述。我应该做的一件事是将记录器变量设置为只读<代码>专用静态只读记录器_log=LogManager.GetLogger(“PortalLog”)嗯,你的代码使用了一些
记录器
类,因此你需要知道那里发生的一切是否都是线程安全的是的,我的记录器是NLog是线程安全的。你的代码是线程安全的,但记录器可能不是。您无法控制它,但这可以在其文档中描述。我应该做的一件事是将记录器变量设置为只读<代码>专用静态只读记录器_log=LogManager.GetLogger(“PortalLog”)