Share via


AsyncCrossProcessMutex Classe

Definizione

Un mutex che può essere immesso in modo asincrono.

public class AsyncCrossProcessMutex : IDisposable
type AsyncCrossProcessMutex = class
    interface IDisposable
Public Class AsyncCrossProcessMutex
Implements IDisposable
Ereditarietà
AsyncCrossProcessMutex
Implementazioni

Esempio

using AsyncCrossProcessMutex mutex = new("Some-Unique Name"); using (await mutex. EnterAsync()) { // Codice che non deve essere eseguito in parallelo con qualsiasi altro thread o processo protetto dallo stesso mutex denominato. }

Commenti

Questa classe usa la primitiva di sincronizzazione mutex del sistema operativo, che è fondamentalmente affinità thread e richiede il blocco sincrono del thread che possiede il mutex. Ciò rende un mutex nativo non adatto per l'uso nei metodi asincroni, in cui il thread che entra nel mutex potrebbe non essere lo stesso thread che lo chiude. Questa classe risolve il problema usando un thread dedicato privato per immettere e rilasciare il mutex, ma in caso contrario consente al proprietario di eseguire codice asincrono, cambiare thread e così via.

Costruttori

AsyncCrossProcessMutex(String)

Inizializza una nuova istanza della classe AsyncCrossProcessMutex.

Proprietà

Name

Ottiene il nome del mutex.

Metodi

Dispose()

Elimina gli oggetti nativi sottostanti.

EnterAsync()

Acquisisce il mutex in modo asincrono.

EnterAsync(TimeSpan)

Acquisisce il mutex in modo asincrono.

TryEnterAsync(TimeSpan)

Acquisisce il mutex in modo asincrono, consentendo timeout senza generare eccezioni.

Si applica a