Click or drag to resize
IProgressiveCacheLoadAsyncTData Method (FuncCacheSettings, CancellationToken, 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 loadDataFuncAsync 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#
Task<TData> LoadAsync<TData>(
	Func<CacheSettings, CancellationToken, Task<TData>> loadDataFuncAsync,
	CacheSettings settings,
	CancellationToken cancellationToken
)

Parameters

loadDataFuncAsync
Type: SystemFuncCacheSettings, CancellationToken, TaskTData
Function accepting cache settings and 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 loadDataFuncAsync 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 loadDataFuncAsync is always executed.

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

See Also