在c#中,从静态方法调用静态方法是线程安全的

本文关键字:静态方法 线程 安全 调用 | 更新日期: 2023-09-27 17:52:17

我有一个静态类,它只包含方法,它们都不共享静态字段,因为我没有任何静态字段。我从同一个静态类中的另一个静态方法调用一个静态方法。
线程安全吗?它是Asp。. Net MVC 4应用程序。

示例代码:

public static void RecordHasUserIDOnly(int WebRequestID, int UserID)
{
        _RecordWebRequest(WebRequestID, null, UserID);
}
public static void Record(int WebRequestID, int UserID, int UserLogID)
{
        _RecordWebRequest(WebRequestID, UserLogID, UserID);
}
public static void _RecordWebRequest(int WebRequestID, int? UserLogID,int? UserId )
{
        b_l_webrequest B_L_WebRequest = new b_l_webrequest();
        B_L_WebRequest.rq_id = WebRequestID;
        B_L_WebRequest.log_id = UserLogID;
        B_L_WebRequest.user_id = UserId;
        B_L_WebRequest.rq_time = DateTime.Now;
        PerRequestLevelObjects.Get_Database_Npoco().Insert<b_l_webrequest>(B_L_WebRequest);
}

在c#中,从静态方法调用静态方法是线程安全的

共享静态字段或属性:

public static void _RecordWebRequest(int WebRequestID, int? UserLogID,int? UserId )
{
   b_l_webrequest B_L_WebRequest = new b_l_webrequest();
   ...
   PerRequestLevelObjects.Get_Database_Npoco().Insert<b_l_webrequest>(B_L_WebRequest);
}

所以这完全取决于PerRequestLevelObjects的线程安全程度。

它与"从静态方法调用静态方法"或它们在哪个类中无关。线程安全的唯一问题是共享数据。