GlobalCacheTEventArgsGetAsyncT - метод |
Пространство имён: Tessa.Platform.Caching
protected Task<T> GetAsync<T>( Func<CancellationToken, Task<T>> tryGetFuncAsync, Func<CancellationToken, Task<T>> fillAndGetFuncAsync, CancellationToken cancellationToken = default ) where T : class
Функция, осуществляющая чтение из локального кэша вне блокировок между процессами. Для передачи параметров следует использовать замыкание. Функция возвращает null, если значение прочитать не удалось и требуется наполнение локального кэша из внешнего источника.
Обращение к локальному кэшу потокобезопасно и может проводиться без дополнительной синхронизации.
Функция, выполняющая наполнение локального кэша из внешнего источника и возвращающая значение, запрошенное из кэша после его наполнения. Для передачи параметров следует использовать замыкание.
Обращение к локальному кэшу потокобезопасно и может проводиться без дополнительной синхронизации. Однако, нет гарантии, что значение, отсутствовавшее в локальном кэше в функции tryGetFuncAsync, будет так же отсутствовать при выполнении этой функции. Поэтому функция должна осуществлять добавление или замену необходимых данных, а не только добавление.
Выполнение метода может занять продолжительное время из-за глобальной синхронизацией между процессами, поэтому кэш должен запрашивать максимальный объём данных за раз.
Метод не является потокобезопасным. Потокобезопасным является только доступ к локальному кэшу в методах tryGetFuncAsync и fillAndGetFuncAsync.