AsyncCrossProcessMutex Klasa
Definicja
Ważne
Niektóre informacje odnoszą się do produktu w wersji wstępnej, który może zostać znacząco zmodyfikowany przed wydaniem. Firma Microsoft nie udziela żadnych gwarancji, jawnych lub domniemanych, w odniesieniu do informacji podanych w tym miejscu.
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. |