Доступ к httpcontext в потоке разделяемой функции безопасен? - PullRequest
2 голосов
/ 06 января 2012

У меня проблемы с пониманием, если доступ к httpcontext внутри разделяемой функции без передачи httpcontext в качестве параметра является потокобезопасным?

Мои вопросы: одинаково ли поточно безопасны 2 функции в классе util?

Class foo
    Sub main()
       Dim qs1 = util.getQS(HttpContext.Current)
       Dim qs2 = util.getQS()
    End Sub
End Class

Class util
    Shared Function getQS(hc As HttpContext) As String
        Return hc.Request.QueryString.ToString
    End Function
    Shared Function getQS() As String
        Return HttpContext.Current.Request.QueryString.ToString
    End Function
End Class


РЕДАКТИРОВАТЬ
Я нашел SO сообщение, которое я пропустил в своем первоначальном исследовании, в котором также есть несколько хороших ответов.
Для заинтересованных: HttpContext.Current.Response внутри статического метода

Ответы [ 2 ]

3 голосов
/ 06 января 2012

Две функции в вопросе эквивалентны с точки зрения безопасности потока.

Хотя HttpContext не является потокобезопасным, получение ссылки на HttpContext.Current является потокобезопасным.Обычно отсутствие безопасности потока на объекте HttpContext для каждого запроса не является проблемой, поскольку только один поток одновременно обрабатывает данный запрос.

Однако это может стать проблемой, если у вас есть фоновый работниктемы и т. д., ссылающиеся на HttpContext.Current.

0 голосов
/ 06 января 2012

Короткий ответ - нет. См. Этот вопрос и его ответы для более подробной информации: Использование HTTPContext между потоками

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...