AsyncCrossProcessMutex Classe
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
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. |