HttpContext
и все его свойства не потокобезопасны, поэтому вы должны быть очень осторожны. Чтение данных одновременно из разных потоков не может причинить вреда, но вы должны быть уверены, что никаких операций записи не происходит. Тем не менее, даже если вы уверены, что свойство Items
не изменилось, я бы предпочел сделать копию и передать ее фоновым потокам. Это четко сообщает о намерениях и избавляет вас от дискуссий во время проверки кода или от людей, переоценивающих, действительно ли этот код является поточно-ориентированным.
Теперь об использовании HttpContext
в асинхронных запросах; Доступ к HttpContext
из разных потоков был бы опасен, но в этом случае ASP.NET контролирует потоки и гарантирует, что только один поток обрабатывает запрос. Было бы иначе, если бы вы, например, раскручивали новый поток вручную (используя пул потоков или new Thread()
) and supplying HttpContext
для этого потока, продолжая выполнение.