List <t>变量线程在我的代码</t>中是否安全

时间:2013-05-10 17:31:34

标签: c# .net thread-safety

我有以下静态类。 规则是自定义类型。请确认此方法对于变量 listToUpdate 是线程安全的,我将传递给每个生成静态函数的规则。

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*/

    }
}

感谢您的帮助

编辑: 将从ASP.NET调用RulesBO类。因此,对于每个会话,对于用户的transactionID,将调用GetRulesForTransaction方法以返回规则列表。

每个GetRulesForSetXYZ都会针对特定的transID进行数据库调用,得到一些值,做一些像&lt;&gt;这样的检查100,&gt; 1000等,然后向变量添加一个新的RULE实例。那些其他方法是私有的,只有第一种方法是公开的。

1 个答案:

答案 0 :(得分:1)

既然你说过:

  

每个GetRulesForSetXYZ [...]都是私有的,只有第一个方法是公开的。

这意味着即使从几个不同的线程同时调用entry方法,这些调用中的每一个都有自己的列表。这些列表中的每一个都只能从一个线程访问(至少在它们返回之前),因此您没有任何多线程访问权限,因此不存在竞争条件。