我有以下靜態類。 規則是一種自定義類型。請確認這種方法對於我傳遞給每個生成靜態函數的規則的變量listToUpdate是線程安全的。是我的代碼中的可變線程安全列表<T>
public static class RulesBO
{
public static List<Rule> GetRulesForTransaction(int transID)
{
List<Rule> toReturn = new List<Rule>();
GetRulesForSetA(transID,toReturn);
GetRulesForSetB(transID,toReturn);
}
public static void GetRulesForSetA(int transID, List<Rule> listToUpdate)
{
/*business logic and finally add/remove elements from listToUpdate*/
}
public static void GetRulesForSetB(int transID, List<Rule> listToUpdate)
{
/*business logic and finally add/remove elements from listToUpdate*/
}
}
謝謝您的幫助
編輯: 類RulesBO將從ASP.NET被調用。因此,對於每個會話,對於用戶的transactionID,將調用GetRulesForTransaction方法來返回規則列表。
每個GetRulesForSetXYZ將爲特定的transID進行數據庫調用,獲取一些值,執行一些檢查,如<> 100,> 1000等,然後向該變量添加一個新的RULE實例。其他方法將是私人的,只有第一種方法是公開的。
這裏沒有同步 - 這肯定是**不是線程安全的。 – Oded 2013-05-10 17:33:37
[你稱之爲線程安全的東西是什麼?](http://blogs.msdn.com/b/ericlippert/archive/2009/10/19/what-is-this-thing-you-call-thread-safe .aspx)您需要具體說明您正在執行的操作以及您期望的操作。鑑於此,您的代碼可能會或可能不會滿足您的期望。目前我們不知道你的代碼在做什麼,也不知道你期望它做什麼。 – Servy 2013-05-10 17:33:51
簡答題:不。列表本身不是線程安全的。但是你並沒有在這裏執行任何異步或任何其他線程(從你展示的內容),所以它們都在同一個線程中。 – 2013-05-10 17:34:40