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"); 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. |