AsyncCrossProcessMutex Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Um mutex que pode ser inserido de forma assíncrona.
public class AsyncCrossProcessMutex : IDisposable
type AsyncCrossProcessMutex = class
interface IDisposable
Public Class AsyncCrossProcessMutex
Implements IDisposable
- Herança
-
AsyncCrossProcessMutex
- Implementações
Exemplos
using AsyncCrossProcessMutex mutex = new("Some-Unique Name"); using (await mutex. EnterAsync()) { // Código que não deve ser executado em paralelo com qualquer outro thread ou processo protegido pelo mesmo mutex nomeado. }
Comentários
Essa classe utiliza o primitivo de sincronização mutex do sistema operacional, que é fundamentalmente afinidade de thread e requer o bloqueio síncrono do thread que será o proprietário do mutex. Isso torna um mutex nativo inadequado para uso em métodos assíncronos, em que o thread que entra no mutex pode não ser o mesmo thread que o sai. Essa classe resolve esse problema usando um thread dedicado privado para inserir e liberar o mutex, mas, caso contrário, permite que seu proprietário execute código assíncrono, alternar threads etc.
Construtores
AsyncCrossProcessMutex(String) |
Inicializa uma nova instância da classe AsyncCrossProcessMutex. |
Propriedades
Name |
Obtém o nome do mutex. |
Métodos
Dispose() |
Descarta os objetos nativos subjacentes. |
EnterAsync() |
Adquire o mutex de forma assíncrona. |
EnterAsync(TimeSpan) |
Adquire o mutex de forma assíncrona. |
TryEnterAsync(TimeSpan) |
Adquire o mutex de forma assíncrona, permitindo tempos limite sem gerar exceções. |