-1

我知道静态成员可能会在 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 也在使用静态方法。

我知道有很多关于静态与实例的文章,并且我已经阅读了很多,但我发现真正理解某些东西的最佳方法是编写代码并对其进行测试。谢谢

4

1 回答 1

4

我知道静态成员可能会在 ASP.Net 或任何其他基于 .net 的系统中导致多个用户访问和使用相同线程的并发问题。

好吧,只有当它修改共享状态或执行某种同步时。

我的问题是当我将上下文作为参数传递时使用静态方法是否安全。

当然。它不像其他线程会看到该参数或有权访问它。当然,您必须在静态方法中执行线程安全的工作但仅此而已。

我建议您回到任何暗示静态成员导致并发问题的来源,并真正尝试了解何时以及为什么会出现这种情况。这绝对不是一揽子规则,您无需进一步考虑即可应用。

于 2013-10-16T08:27:39.147 回答