2

在公共静态类中,我有以下本地方法:

private static int GetMaxFromList(IEnumerable<int> list)
    {
        var result = 0;

        foreach (var i in list)
        {
            if (i > result) result = i;
        }

        return result;
    }

该方法由类中的一些公共方法调用(示例):

public static bool IsIntegrityOfDataSetGood(DataSet dataSet, KeyValuePair<string, List<int>> tableAndColumnIndexes)
    {
        return IsIntegrityOfDataSetGood(dataSet, tableAndColumnIndexes.Key) &&
               dataSet.Tables[tableAndColumnIndexes.Key].Columns.Count > GetMaxFromList(tableAndColumnIndexes.Value);
    }

请注意,此公共方法还调用类中的另一个公共方法。

类方法只能处理通过参数发送给它们的数据,但我担心静态方法之间的调用会破坏线程安全。我有理由担心吗?

忘了提及此代码位于 .NET 2.0 项目中。

4

2 回答 2

4

不,这不会破坏你的线程安全。

但它是否真的是线程安全的取决于tableAndColumnIndexes来自哪里以及其他线程可以访问它。换句话说,它取决于调用代码。

于 2012-04-13T07:26:53.737 回答
3

只要没有其他线程在更改list顺序,就绝对没问题。它不访问任何共享状态——它只是使用它的参数。如果任何其他线程正在修改序列,您将获得一个InvalidOperationException.

听起来您可能对线程安全和静态方法有一些误解,但很难确切地说出它们是什么……您可能会发现 Eric Lippert 的博客文章“你称之为线程安全的东西是什么?” 有用。

于 2012-04-13T07:27:27.290 回答