言語

AsyncCrossProcessMutex クラス

定義

非同期に入力できるミューテックス。

public class AsyncCrossProcessMutex : IDisposable
type AsyncCrossProcessMutex = class
    interface IDisposable
Public Class AsyncCrossProcessMutex
Implements IDisposable
継承
AsyncCrossProcessMutex
実装

using AsyncCrossProcessMutex mutex = new("Some-Unique Name");using (await mutex.EnterAsync()) { // 同じ名前付きミューテックスによって保護されている他のスレッドまたはプロセスと並行して実行してはならないコード。 }

注釈

このクラスは、OS ミューテックス同期プリミティブを利用します。これは基本的にスレッドアフィニティが設定されており、ミューテックスを所有するスレッドを同期的にブロックする必要があります。 これにより、ネイティブ ミューテックスは非同期メソッドでの使用に適していません。ミューテックスに入るスレッドが、ミューテックスを終了するスレッドと同じでない可能性があります。 このクラスは、プライベート専用スレッドを使用してミューテックスを入力および解放することでその問題を解決しますが、それ以外の場合は、所有者が非同期コードを実行したり、スレッドを切り替えることができます。

コンストラクター

名前 説明
AsyncCrossProcessMutex(String)

AsyncCrossProcessMutex クラスの新しいインスタンスを初期化します。

プロパティ

名前 説明
Name

ミューテックスの名前を取得します。

メソッド

名前 説明
Dispose()

基になるネイティブ オブジェクトを破棄します。

EnterAsync()

ミューテックスを非同期的に取得します。

EnterAsync(TimeSpan)

ミューテックスを非同期的に取得します。

TryEnterAsync(TimeSpan)

ミューテックスを非同期的に取得し、例外をスローせずにタイムアウトできるようにします。

適用対象