Поделиться через


AsyncCrossProcessMutex Класс

Определение

Мьютекс, который можно ввести асинхронно.

public class AsyncCrossProcessMutex : IDisposable
type AsyncCrossProcessMutex = class
    interface IDisposable
Public Class AsyncCrossProcessMutex
Implements IDisposable
Наследование
AsyncCrossProcessMutex
Реализации

Примеры

с помощью мьютекса AsyncCrossProcessMutex = new("Some-Unique Name"); using (await mutex. EnterAsync()) { // Код, который не должен выполняться параллельно с любым другим потоком или процессом, защищенным тем же именованным мьютексом. }

Комментарии

Этот класс использует примитив синхронизации мьютексов ОС, который изначально связан с потоками и требует синхронной блокировки потока, который будет владеть мьютексом. Это делает собственный мьютекс непригодным для использования в асинхронных методах, где поток, который входит в мьютекс, может быть не тем же потоком, который выходит из него. Этот класс решает эту проблему, используя частный выделенный поток для ввода и освобождения мьютекса, но в противном случае позволяет его владельцу выполнять асинхронный код, переключать потоки и т. д.

Конструкторы

AsyncCrossProcessMutex(String)

Инициализирует новый экземпляр класса AsyncCrossProcessMutex.

Свойства

Name

Возвращает имя мьютекса.

Методы

Dispose()

Удаляет базовые собственные объекты.

EnterAsync()

Асинхронно получает мьютекс.

EnterAsync(TimeSpan)

Асинхронно получает мьютекс.

TryEnterAsync(TimeSpan)

Получает мьютекс асинхронно, обеспечивая время ожидания без создания исключений.

Применяется к