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) |
Получает мьютекс асинхронно, обеспечивая время ожидания без создания исключений. |