Click or drag to resize
CacheHelperCacheAsyncTData Method (FuncCancellationToken, TaskTData, CacheSettings, CancellationToken)
Asynchronously loads data. If multiple threads are loading the same data, only one thread executes the load, stores the result into cache and the result is distributed to other waiting threads. If an exception is thrown during loadMethodAsync execution, the exception is distributed as well. No data are cached in such a case.

Namespace: CMS.Helpers
Assembly: CMS.Helpers (in CMS.Helpers.dll) Version: 13.0.131
Syntax
C#
public static Task<TData> CacheAsync<TData>(
	Func<CancellationToken, Task<TData>> loadMethodAsync,
	CacheSettings settings,
	CancellationToken cancellationToken
)

Parameters

loadMethodAsync
Type: SystemFuncCancellationToken, TaskTData
Function accepting a cancellation token and returning the asynchronous data loading task.
settings
Type: CMS.HelpersCacheSettings
Settings configuring the cache.
cancellationToken
Type: System.ThreadingCancellationToken
The cancellation instruction.

Type Parameters

TData
Type of data to be loaded.

Return Value

Type: TaskTData
Returns a task returning the loaded data.
Exceptions
ExceptionCondition
ArgumentNullExceptionThrown when loadMethodAsync or settings is null.
InvalidOperationExceptionThrown when multiple threads are loading the same item (identified by CacheItemName) with incompatible TData.
Remarks

Based on the settings the data is stored into cache. If Cached is set to false, no caching is performed and fresh data are retrieved.

If both progressive load is allowed (both AllowProgressiveCaching and ProgressiveCaching are set to true), the fresh data retrieval is subject to progressive load (i.e. only one threads executes the load and the result is distributed to other waiting threads). Otherwise, the loadMethodAsync is always executed.

No assumptions must be made on which thread executes the loadMethodAsync. The thread creating the underlying load item is not necessarily the one executing the item. Any of the waiting threads can execute the item.

IProgressiveCache can be used to avoid a dependency on this static method.

See Also