Sdílet prostřednictvím


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"); pomocí (await mutex. EnterAsync()) { // Kód, který se nesmí spustit 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á primitivu synchronizace mutex operačního systému, která je v podstatě spřažení vláken a vyžaduje synchronní blokování vlákna, které bude vlastnit mutex. To způsobí, že nativní mutex není vhodný pro použití v asynchronních metodách, kde vlákno, které vstupuje do mutexu, nemusí být stejné vlákno, které ho opustí. Tato třída řeší tento problém pomocí privátního vyhrazeného vlákna pro zadání a uvolnění mutex, ale jinak umožňuje jeho vlastníkovi spustit asynchronní kód, přepnout vlákna atd.

Konstruktory

AsyncCrossProcessMutex(String)

Inicializuje novou instanci AsyncCrossProcessMutex třídy .

Vlastnosti

Name

Získá název mutex.

Metody

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