据我所知,静态成员可能会导致ASP.Net或任何其他基于.net的系统出现并发问题,多个用户将访问并使用相同的线程。
我的问题是当我将上下文作为参数传递时,使用静态方法是否安全。例如:
public class BL
{
public static List<DocumentType> GetAllActiveDocumentTypesForMyDeparment(int CurrentDepartment)
{
return Data.DAL.GetAllActiveDocumentTypesForMyDeparment(CurrentDepartment).Where(s => s.IsActive)
.OrderBy(s => s.DocumentTypeDisplayName).ToList();
}
}
以上会导致并发问题吗?请注意我的DAL也使用静态方法。
我知道有很多关于Static vs Instance的文章,我已经阅读了很多文章,但我发现真正理解某些东西的最好方法是编写代码并测试它。感谢
答案 0 :(得分:4)
据我所知,静态成员可能会导致ASP.Net或任何其他基于.net的系统出现并发问题,多个用户将访问并使用相同的线程。
只有当它修改共享状态或执行某种同步时才会这样。
我的问题是当我将上下文作为参数传递时,使用静态方法是否安全。
不确定。它不像其他线程会看到该参数或有权访问它。当然,你必须在静态方法中执行线程安全的工作,但就是这样。
我建议你回到建议静态成员引起并发问题的任何来源,并且真正尝试理解何时以及为什么会出现这种情况。如果没有进一步考虑,这绝对不是一揽子规则。