Jazyk

AsyncCrossProcessMutex Třída

Definice

Mutex, který lze zadat asynchronně.

public class AsyncCrossProcessMutex : IDisposable
type AsyncCrossProcessMutex = class
    interface IDisposable
Public Class AsyncCrossProcessMutex
Implements IDisposable
Dědičnost
AsyncCrossProcessMutex
Implementuje

Příklady

using AsyncCrossProcessMutex mutex = new("Some-Unique Name"); using (await mutex). EnterAsync()) { // Kód, který nesmí být spuštěn paralelně s žádným jiným vláknem nebo procesem chráněným stejným názvem mutex. }

Poznámky

Tato třída využívá primitivní synchronizaci mutex operačního systému, která je v podstatě spřažení vláken a vyžaduje synchronně blokující vlákno, které bude vlastnit mutex. To způsobí, že nativní mutex není vhodný pro použití v asynchronních metodách, kde vlákno, které vstoupí do mutex, nemusí být stejné vlákno, které ho ukončí. Tato třída tento problém řeší pomocí privátního vyhrazeného vlákna k zadání a uvolnění mutex, ale jinak umožňuje jeho vlastníkovi spustit asynchronní kód, přepnout vlákna atd.

Konstruktory

Name Description
AsyncCrossProcessMutex(String)

Inicializuje novou instanci AsyncCrossProcessMutex třídy.

Vlastnosti

Name Description
Name

Získá název mutexu.

Metody

Name Description
Dispose()

Odstraní základní nativní objekty.

EnterAsync()

Získá mutex asynchronně.

EnterAsync(TimeSpan)

Získá mutex asynchronně.

TryEnterAsync(TimeSpan)

Získá mutex asynchronně, což umožňuje vypršení časových limitů bez vyvolání výjimek.

Platí pro