protected ValueTask<T> TryGetAsync<T>(
Func<CancellationToken, ValueTask<T>> tryGetFuncAsync,
bool optimizeAtomicTryGet = false,
CancellationToken cancellationToken = default
)
where T : class
Protected Function TryGetAsync(Of T As Class) (
tryGetFuncAsync As Func(Of CancellationToken, ValueTask(Of T)),
Optional optimizeAtomicTryGet As Boolean = false,
Optional cancellationToken As CancellationToken = Nothing
) As ValueTask(Of T)protected:
generic<typename T>
where T : ref class
ValueTask<T> TryGetAsync(
Func<CancellationToken, ValueTask<T>>^ tryGetFuncAsync,
bool optimizeAtomicTryGet = false,
CancellationToken cancellationToken = CancellationToken()
)member TryGetAsync :
tryGetFuncAsync : Func<CancellationToken, ValueTask<'T>> *
?optimizeAtomicTryGet : bool *
?cancellationToken : CancellationToken
(* Defaults:
let _optimizeAtomicTryGet = defaultArg optimizeAtomicTryGet false
let _cancellationToken = defaultArg cancellationToken new CancellationToken()
*)
-> ValueTask<'T> when 'T : not structФункция, осуществляющая чтение из локального кэша вне блокировок между процессами. Для передачи параметров следует использовать замыкание. Функция возвращает null, если значение прочитать не удалось и требуется наполнение локального кэша из внешнего источника.
Обращение к локальному кэшу потокобезопасно и может проводиться без дополнительной синхронизации.
Флаг оптимизации атомарных обращений к кэшу.
При включении этого флага метод tryGetFuncAsync будет вызван без взятия блокировок и для него не гарантируется потокобезопасность.
Перед использованием этого флага убедитесь, что методы tryGetFuncAsync и InvalidateLocalCacheCoreAsync(TPayload) потокобезопасны.