GlobalCacheTEventArgsGetAsyncT - метод

Инициирует заполнение кэша при необходимости и возвращает запрошенное из кэша значение.

Definition

Пространство имён: Tessa.Platform.Caching
Сборка: Tessa (в Tessa.dll) Версия: 4.0.4
C#
protected Task<T> GetAsync<T>(
	Func<CancellationToken, Task<T>> tryGetFuncAsync,
	Func<CancellationToken, Task<T>> fillAndGetFuncAsync,
	bool optimizeAtomicTryGet = false,
	CancellationToken cancellationToken = default
)
where T : class

Параметры

tryGetFuncAsync  FuncCancellationToken, TaskT

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

Обращение к локальному кэшу потокобезопасно и может проводиться без дополнительной синхронизации.

fillAndGetFuncAsync  FuncCancellationToken, TaskT

Функция, выполняющая наполнение локального кэша из внешнего источника и возвращающая значение, запрошенное из кэша после его наполнения. Для передачи параметров следует использовать замыкание.

Обращение к локальному кэшу потокобезопасно и может проводиться без дополнительной синхронизации. Однако, нет гарантии, что значение, отсутствовавшее в локальном кэше в функции tryGetFuncAsync, будет так же отсутствовать при выполнении этой функции. Поэтому функция должна осуществлять добавление или замену необходимых данных, а не только добавление.

optimizeAtomicTryGet  Boolean  (Optional)

Флаг оптимизации атомарных обращений к кэшу.

При включении этого флага метод tryGetFuncAsync может выполняться дважды. При этом, первый вызов метода будет происходить без взятия блокировок и для него не гарантируется потокобезопасность.

Перед использованием этого флага убедитесь, что методы tryGetFuncAsync и InvalidateLocalCacheOverrideAsync(TEventArgs, CancellationToken) потокобезопасны.

cancellationToken  CancellationToken  (Optional)
Объект, посредством которого можно отменить асинхронную задачу.

Параметры типа

T
Тип запрашиваемого объекта.

Возвращаемое значение

TaskT
Значение, запрошенное из кэша.

Заметки

Выполнение метода может занять продолжительное время из-за глобальной синхронизацией между процессами, поэтому кэш должен запрашивать максимальный объём данных за раз.

Метод не является потокобезопасным. Потокобезопасным является только доступ к локальному кэшу в методах tryGetFuncAsync и fillAndGetFuncAsync.

См. также