Udostępnij za pośrednictwem


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 pierwotnej synchronizacji mutex systemu operacyjnego, która 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 wchodzi do mutex, może nie być tym samym wątkiem, który go zamyka. Ta klasa rozwiązuje ten problem, używając prywatnego dedykowanego wątku do wprowadzania i wydawania mutex, ale w przeciwnym razie umożliwia właścicielowi wykonywanie kodu asynchronicznego, przełączania wątków itp.

Konstruktory

AsyncCrossProcessMutex(String)

Inicjuje nowe wystąpienie klasy AsyncCrossProcessMutex.

Właściwości

Name

Pobiera nazwę mutexu.

Metody

Dispose()

Usuwa bazowe obiekty natywne.

EnterAsync()

Uzyskuje asynchronicznie mutex.

EnterAsync(TimeSpan)

Uzyskuje asynchronicznie mutex.

TryEnterAsync(TimeSpan)

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

Dotyczy