Объект кэша является поточно-ориентированным , но HttpContext.Current
не будет доступен из фоновых потоков. Это может относиться к вам, а может и не применяться, из вашего фрагмента кода не очевидно, являетесь ли вы пользователем на самом деле используя фоновые потоки, но если вы сейчас или решите в какой-то момент в будущем, вы должны помнить об этом.
Если есть вероятность, что вам понадобится получить доступ к кешу из фонового потока, используйте вместо этого HttpRuntime.Cache .
Кроме того, хотя отдельные операции с кешем являются поточно-ориентированными, последовательные операции поиска / сохранения, очевидно, не являются атомарными. Нужно ли вам , чтобы они были атомарными, зависит от вашего конкретного применения. Если это может быть серьезной проблемой для выполнения одного и того же запроса несколько раз, т. Е. Если это вызовет большую нагрузку, чем ваша база данных может обработать, или если это будет проблемой для запроса на возврат данных, которые немедленно перезаписываются в кеш, тогда вы, вероятно, захотите установить блокировку вокруг всего блока кода.
Тем не менее, в большинстве случаев вам действительно нужно сначала создать профиль и посмотреть, действительно ли это проблема. Большинство веб-приложений / служб не заботятся об этом аспекте кэширования, поскольку они не сохраняют состояния и не имеет значения, если кэш перезаписывается.