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 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. |