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