Język

AsyncCrossProcessMutex Klasa

Definicja

Mutex, który można wprowadzić asynchronicznie.

public class AsyncCrossProcessMutex : IDisposable
type AsyncCrossProcessMutex = class
    interface IDisposable
Public Class AsyncCrossProcessMutex
Implements IDisposable
Dziedziczenie
AsyncCrossProcessMutex
Implementuje

Przykłady

using AsyncCrossProcessMutex mutex = new("Some-Unique Name"); using (await mutex. EnterAsync()) { // Kod, który nie może być wykonywany równolegle z żadnym innym wątkiem lub procesem chronionym przez ten sam nazwany mutex. }

Uwagi

Ta klasa korzysta z pierwotnego elementu pierwotnego synchronizacji mutex systemu operacyjnego, który jest zasadniczo wątkowo affinitized i wymaga synchronicznego blokowania wątku, który będzie właścicielem mutexu. Sprawia to, że natywny mutex jest nieodpowiedni do użycia w metodach asynchronicznych, gdzie wątek, który przechodzi do mutex, może nie być tym samym wątkiem, który go zamyka. Ta klasa rozwiązuje ten problem przy użyciu prywatnego dedykowanego wątku, aby wprowadzić i zwolnić mutex, ale w przeciwnym razie umożliwia właścicielowi wykonywanie kodu asynchronicznego, przełącz wątki itp.

Konstruktory

Nazwa Opis
AsyncCrossProcessMutex(String)

Inicjuje nowe wystąpienie klasy AsyncCrossProcessMutex.

Właściwości

Nazwa Opis
Name

Pobiera nazwę mutexu.

Metody

Nazwa Opis
Dispose()

Pozbywa się bazowych obiektów natywnych.

EnterAsync()

Pobiera asynchronicznie mutex.

EnterAsync(TimeSpan)

Pobiera asynchronicznie mutex.

TryEnterAsync(TimeSpan)

Pobiera asynchronicznie mutex, co pozwala na przekroczenie limitu czasu bez zgłaszania wyjątków.

Dotyczy