AsyncCrossProcessMutex Třída
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
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. |