# Class LockManagerService

Namespace
  adas_core.Application.Services.Caching

Assembly
  adas-core.Application.dll

Servicio que ejecuta acciones dentro de una sección crítica controlada por lock. CacheService lo usará para evitar condiciones de carrera en GetOrSet. Funciona igual para locks locales o distribuidos.

    public class LockManagerService

Inheritance
  object
  LockManagerService

Inherited Members
  object.Equals(object)
  object.Equals(object, object)
  object.GetHashCode()
  object.GetType()
  object.MemberwiseClone()
  object.ReferenceEquals(object, object)
  object.ToString()

Extension Methods
  NumberUtils.IsNumber(object)
  NumberUtils.ToDouble(object)
  ObjectUtils.ToStr(object?)

## Constructors

### LockManagerService(ILogger<LockManagerService>, ILockProvider)

Servicio que ejecuta acciones dentro de una sección crítica controlada por lock. CacheService lo usará para evitar condiciones de carrera en GetOrSet. Funciona igual para locks locales o distribuidos.

    public LockManagerService(ILogger<LockManagerService> logger, ILockProvider provider)

#### Parameters

`logger` ILogger<LockManagerService>
`provider` ILockProvider

## Methods

### WithLockAsync(string, TimeSpan, Func<Task>, CancellationToken)

Version Task (sin valor).

    public Task WithLockAsync(string key, TimeSpan timeout, Func<Task> action, CancellationToken cancellationToken = default)

#### Parameters

`key` string
`timeout` TimeSpan
`action` Func<Task>
`cancellationToken` CancellationToken

#### Returns

Task

### WithLockAsync<T>(string, TimeSpan, Func<Task<T>>, CancellationToken)

Ejecuta una función que devuelve un valor bajo un lock por clave.

    public Task<T> WithLockAsync<T>(string key, TimeSpan timeout, Func<Task<T>> action, CancellationToken cancellationToken = default)

#### Parameters

`key` string
`timeout` TimeSpan
`action` Func<Task<T>>
`cancellationToken` CancellationToken

#### Returns

Task<T>

#### Type Parameters

`T`