在公共静态类中,我有以下本地方法:
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项目中。
答案 0 :(得分:4)
不,这将不影响你的线程安全。
但它是否真的是线程安全的取决于tableAndColumnIndexes
来自何处以及其他线程可以访问它。换句话说,它取决于调用代码。
答案 1 :(得分:3)
只要没有其他线程正在改变list
序列,它应该是绝对正常的。它不访问任何共享状态 - 它只使用其参数。如果任何其他线程 修改序列,您将获得InvalidOperationException
。
听起来你可能对线程安全和静态方法有一些误解,但很难确切地说出它们是什么......你可能会发现Eric Lippert的博客文章"What is this thing you call thread safe?"很有用。