Compartir a través de


AsyncCrossProcessMutex Clase

Definición

Exclusión mutua que se puede introducir de forma asincrónica.

public class AsyncCrossProcessMutex : IDisposable
type AsyncCrossProcessMutex = class
    interface IDisposable
Public Class AsyncCrossProcessMutex
Implements IDisposable
Herencia
AsyncCrossProcessMutex
Implementaciones

Ejemplos

using AsyncCrossProcessMutex mutex = new("Some-Unique Name"); using (await mutex). EnterAsync()) { // Code que no se debe ejecutar en paralelo con ningún otro subproceso o proceso protegido por la misma exclusión mutua con nombre. }

Comentarios

Esta clase utiliza el primitivo de sincronización de exclusión mutua del sistema operativo, que es fundamentalmente afinidad entre subprocesos y requiere bloquear de forma sincrónica el subproceso que poseerá la exclusión mutua. Esto hace que una exclusión mutua nativa no sea adecuada para su uso en métodos asincrónicos, donde el subproceso que entra en la exclusión mutua puede no ser el mismo subproceso que lo sale. Esta clase resuelve ese problema mediante un subproceso dedicado privado para escribir y liberar la exclusión mutua, pero de lo contrario permite a su propietario ejecutar código asincrónico, cambiar subprocesos, etc.

Constructores

AsyncCrossProcessMutex(String)

Inicializa una nueva instancia de la clase AsyncCrossProcessMutex.

Propiedades

Name

Obtiene el nombre de la exclusión mutua.

Métodos

Dispose()

Elimina los objetos nativos subyacentes.

EnterAsync()

Adquiere la exclusión mutua de forma asincrónica.

EnterAsync(TimeSpan)

Adquiere la exclusión mutua de forma asincrónica.

TryEnterAsync(TimeSpan)

Adquiere la exclusión mutua de forma asincrónica, lo que permite tiempos de espera sin iniciar excepciones.

Se aplica a