AsyncCrossProcessMutex Clase
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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. |