我有一个静态类,它只包含方法,并且没有一个共享静态字段,因为我没有。我在同一个静态类中从另一个静态方法调用一个静态方法 线程安全吗?它是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);
}
答案 0 :(得分:2)
您确实共享静态字段或属性:
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
的方式。
它与“从静态方法调用静态方法”或它们所属的类几乎没有关系。线程安全的唯一问题是共享数据。