Статические методы нормально использовать при использовании параметров?

Я понимаю, что члены Static могут вызывать проблемы параллелизма в ASP.Net или любой другой системе на основе.net, где несколько пользователей будут иметь доступ и использовать одни и те же потоки.

Мой вопрос заключается в том, безопасно ли использовать статические методы, когда я передаю в качестве параметра параметр context. Пример:

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, и я прочитал много из них, но я нашел, что лучший способ действительно понять что-то - это написать код и протестировать его. Спасибо

1 ответ

Решение

Я понимаю, что члены Static могут вызывать проблемы параллелизма в ASP.Net или любой другой системе на основе.net, где несколько пользователей будут иметь доступ и использовать одни и те же потоки.

Хорошо, только если он изменяет общее состояние или выполняет какую-то синхронизацию.

Мой вопрос заключается в том, безопасно ли использовать статические методы, когда я передаю в качестве параметра параметр context.

Конечно. Это не так, как другие потоки увидят этот параметр или имеют доступ к нему. Конечно, вы должны выполнять потоковую работу внутри статического метода, но это все.

Я предлагаю вам вернуться к тем источникам, которые предполагали, что статические члены вызывают проблемы параллелизма, и действительно попытаться понять, когда и почему это так. Это определенно не общее правило, которое вы можете применять без дальнейшего рассмотрения.

Другие вопросы по тегам