Partilhar via


AsyncCrossProcessMutex Classe

Definição

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.

Aplica-se a