Mutex Osztály

Definíció

Egy primitív szinkronizálási primitív, amely a folyamatközi szinkronizáláshoz is használható.

public ref class Mutex sealed : System::Threading::WaitHandle
public sealed class Mutex : System.Threading.WaitHandle
[System.Runtime.InteropServices.ComVisible(true)]
public sealed class Mutex : System.Threading.WaitHandle
type Mutex = class
    inherit WaitHandle
[<System.Runtime.InteropServices.ComVisible(true)>]
type Mutex = class
    inherit WaitHandle
Public NotInheritable Class Mutex
Inherits WaitHandle
Öröklődés
Öröklődés
Attribútumok

Példák

Ez a példa bemutatja, hogyan szinkronizálja egy helyi Mutex objektum a védett erőforráshoz való hozzáférést. Mivel az egyes hívószálak mindaddig le vannak tiltva, amíg meg nem szerzi a mutex tulajdonjogát, meg kell hívnia a metódust a ReleaseMutex mutex tulajdonjogának felszabadításához.

using System;
using System.Threading;

class Example
{
    // Create a new Mutex. The creating thread does not own the mutex.
    private static Mutex mut = new Mutex();
    private const int numIterations = 1;
    private const int numThreads = 3;

    static void Main()
    {
        // Create the threads that will use the protected resource.
        for(int i = 0; i < numThreads; i++)
        {
            Thread newThread = new Thread(new ThreadStart(ThreadProc));
            newThread.Name = String.Format("Thread{0}", i + 1);
            newThread.Start();
        }

        // The main thread exits, but the application continues to
        // run until all foreground threads have exited.
    }

    private static void ThreadProc()
    {
        for(int i = 0; i < numIterations; i++)
        {
            UseResource();
        }
    }

    // This method represents a resource that must be synchronized
    // so that only one thread at a time can enter.
    private static void UseResource()
    {
        // Wait until it is safe to enter.
        Console.WriteLine("{0} is requesting the mutex", 
                          Thread.CurrentThread.Name);
        mut.WaitOne();

        Console.WriteLine("{0} has entered the protected area", 
                          Thread.CurrentThread.Name);

        // Place code to access non-reentrant resources here.

        // Simulate some work.
        Thread.Sleep(500);

        Console.WriteLine("{0} is leaving the protected area", 
            Thread.CurrentThread.Name);

        // Release the Mutex.
        mut.ReleaseMutex();
        Console.WriteLine("{0} has released the mutex", 
            Thread.CurrentThread.Name);
    }
}
// The example displays output like the following:
//       Thread1 is requesting the mutex
//       Thread2 is requesting the mutex
//       Thread1 has entered the protected area
//       Thread3 is requesting the mutex
//       Thread1 is leaving the protected area
//       Thread1 has released the mutex
//       Thread3 has entered the protected area
//       Thread3 is leaving the protected area
//       Thread3 has released the mutex
//       Thread2 has entered the protected area
//       Thread2 is leaving the protected area
//       Thread2 has released the mutex
Imports System.Threading

Module Example
   ' Create a new Mutex. The creating thread does not own the mutex.
   Private mut As New Mutex()
   Private Const numIterations As Integer = 1
   Private Const numThreads As Integer = 3
   
   Public Sub Main()
        ' Create the threads that will use the protected resource.
        For i As Integer = 0 To numThreads - 1
            Dim newThread As New Thread(AddressOf ThreadProc)
            newThread.Name = String.Format("Thread{0}", i + 1)
            newThread.Start()
        Next

        ' The main thread exits, but the application continues to
        ' run until all foreground threads have exited.
    End Sub

    Private Sub ThreadProc()
        For i As Integer = 0 To numIterations - 1
            UseResource()
        Next
    End Sub

    ' This method represents a resource that must be synchronized
    ' so that only one thread at a time can enter.
    Private Sub UseResource()
        ' Wait until it is safe to enter.
        Console.WriteLine("{0} is requesting the mutex", 
                          Thread.CurrentThread.Name)
        mut.WaitOne()

        Console.WriteLine("{0} has entered the protected area", 
                          Thread.CurrentThread.Name)

        ' Place code to access non-reentrant resources here.

        ' Simulate some work.
        Thread.Sleep(500)

        Console.WriteLine("{0} is leaving the protected area", 
            Thread.CurrentThread.Name)

        ' Release the Mutex.
        mut.ReleaseMutex()
        Console.WriteLine("{0} has released the mutex", 
            Thread.CurrentThread.Name)
   End Sub
End Module
' The example displays output like the following:
'       Thread1 is requesting the mutex
'       Thread2 is requesting the mutex
'       Thread1 has entered the protected area
'       Thread3 is requesting the mutex
'       Thread1 is leaving the protected area
'       Thread1 has released the mutex
'       Thread3 has entered the protected area
'       Thread3 is leaving the protected area
'       Thread3 has released the mutex
'       Thread2 has entered the protected area
'       Thread2 is leaving the protected area
'       Thread2 has released the mutex

Az alábbi példában minden szál meghívja a metódust a WaitOne(Int32) mutex beszerzéséhez. Ha az időtúllépési időköz eltelik, a metódus visszatér false, és a szál nem szerzi be a mutexet, és nem fér hozzá a mutex által védett erőforráshoz. A ReleaseMutex metódust csak az a szál hívja meg, amely a mutexet szerzi be.

using System;
using System.Threading;

class Example
{
    // Create a new Mutex. The creating thread does not own the mutex.
    private static Mutex mut = new Mutex();
    private const int numIterations = 1;
    private const int numThreads = 3;

    static void Main()
    {
        Example ex = new Example();
        ex.StartThreads();
    }

     private void StartThreads()
     {
        // Create the threads that will use the protected resource.
        for(int i = 0; i < numThreads; i++)
        {
            Thread newThread = new Thread(new ThreadStart(ThreadProc));
            newThread.Name = String.Format("Thread{0}", i + 1);
            newThread.Start();
        }

        // The main thread returns to Main and exits, but the application continues to
        // run until all foreground threads have exited.
    }

    private static void ThreadProc()
    {
        for(int i = 0; i < numIterations; i++)
        {
            UseResource();
        }
    }

    // This method represents a resource that must be synchronized
    // so that only one thread at a time can enter.
    private static void UseResource()
    {
        // Wait until it is safe to enter, and do not enter if the request times out.
        Console.WriteLine("{0} is requesting the mutex", Thread.CurrentThread.Name);
        if (mut.WaitOne(1000)) {
           Console.WriteLine("{0} has entered the protected area", 
               Thread.CurrentThread.Name);
   
           // Place code to access non-reentrant resources here.
   
           // Simulate some work.
           Thread.Sleep(5000);
   
           Console.WriteLine("{0} is leaving the protected area", 
               Thread.CurrentThread.Name);
   
           // Release the Mutex.
              mut.ReleaseMutex();
           Console.WriteLine("{0} has released the mutex", 
                             Thread.CurrentThread.Name);
        }
        else {
           Console.WriteLine("{0} will not acquire the mutex", 
                             Thread.CurrentThread.Name);
        }
    }

    ~Example()
    {
       mut.Dispose();
    }
}
// The example displays output like the following:
//       Thread1 is requesting the mutex
//       Thread1 has entered the protected area
//       Thread2 is requesting the mutex
//       Thread3 is requesting the mutex
//       Thread2 will not acquire the mutex
//       Thread3 will not acquire the mutex
//       Thread1 is leaving the protected area
//       Thread1 has released the mutex
Imports System.Threading

Class Example
   ' Create a new Mutex. The creating thread does not own the mutex.
   Private mut As New Mutex()
   Private Const numIterations As Integer = 1
   Private Const numThreads As Integer = 3

   Public Shared Sub Main()
      Dim ex As New Example()
      ex.StartThreads()
   End Sub
   
   Private Sub StartThreads()
        ' Create the threads that will use the protected resource.
        For i As Integer = 0 To numThreads - 1
            Dim newThread As New Thread(AddressOf ThreadProc)
            newThread.Name = String.Format("Thread{0}", i + 1)
            newThread.Start()
        Next

        ' The main thread returns to Main and exits, but the application continues to
        ' run until all foreground threads have exited.
   End Sub

   Private Sub ThreadProc()
        For i As Integer = 0 To numIterations - 1
            UseResource()
        Next
   End Sub

   ' This method represents a resource that must be synchronized
   ' so that only one thread at a time can enter.
   Private Sub UseResource()
        ' Wait until it is safe to enter.
        Console.WriteLine("{0} is requesting the mutex", 
                          Thread.CurrentThread.Name)
        If mut.WaitOne(1000) Then
           Console.WriteLine("{0} has entered the protected area", 
               Thread.CurrentThread.Name)
   
           ' Place code to access non-reentrant resources here.
   
           ' Simulate some work.
           Thread.Sleep(5000)
   
           Console.WriteLine("{0} is leaving the protected area", 
               Thread.CurrentThread.Name)
   
           ' Release the Mutex.
           mut.ReleaseMutex()
           Console.WriteLine("{0} has released the mutex", 
                             Thread.CurrentThread.Name)
        Else
           Console.WriteLine("{0} will not acquire the mutex", 
                             Thread.CurrentThread.Name)
        End If
   End Sub
   
   Protected Overrides Sub Finalize()
      mut.Dispose()
   End Sub
End Class
' The example displays output like the following:
'       Thread1 is requesting the mutex
'       Thread1 has entered the protected area
'       Thread2 is requesting the mutex
'       Thread3 is requesting the mutex
'       Thread2 will not acquire the mutex
'       Thread3 will not acquire the mutex
'       Thread1 is leaving the protected area
'       Thread1 has released the mutex

Megjegyzések

Ha két vagy több szálnak egyszerre kell hozzáférnie egy megosztott erőforráshoz, a rendszernek szinkronizálási mechanizmusra van szüksége annak biztosításához, hogy egyszerre csak egy szál használja az erőforrást. Mutex egy olyan szinkronizálási primitív, amely kizárólagos hozzáférést biztosít a megosztott erőforráshoz csak egy szálhoz. Ha egy szál mutexet szerez be, a második szál, amely meg szeretné szerezni a mutexet, fel lesz függesztve, amíg az első szál fel nem oldja a mutexet.

Important

Ez a típus implementálja a IDisposable felületet. Ha befejezte a típus használatát, közvetlenül (a metódus meghívásával) vagy közvetetten (például using a C#-ban) kell elhelyeznie Dispose a típust. További információ: Az IDisposable-t megvalósító objektum használata.

A metódussal kérheti a WaitHandle.WaitOne mutex tulajdonjogát. A hívószál az alábbi műveletek egyikéig blokkolja a hívó szálat:

  • A mutex jelzése azt jelzi, hogy nem a tulajdonosa. Ha ez történik, a WaitOne metódus visszatér true, és a hívó szál a mutex tulajdonjogát feltételezi, és hozzáfér a mutex által védett erőforráshoz. Ha befejezte az erőforrás elérését, a szálnak meg kell hívnia a ReleaseMutex metódust a mutex tulajdonjogának felszabadításához. A Példák szakaszban szereplő első példa ezt a mintát szemlélteti.
  • A metódus meghívásában WaitOne megadott időtúllépési időköz, amely egy vagy millisecondsTimeout több paraméterrel rendelkeziktimeout. Amikor ez történik, a WaitOne metódus visszatér false, és a hívó szál nem tesz további kísérletet a mutex tulajdonjogának megszerzésére. Ebben az esetben úgy kell strukturálnia a kódot, hogy a mutex által védett erőforráshoz való hozzáférés megtagadva legyen a hívó szálhoz. Mivel a szál soha nem szerezte meg a mutex tulajdonjogát, nem nevezheti a metódust ReleaseMutex . A Példák szakaszban található második példa ezt a mintát szemlélteti.

Az Mutex osztály kikényszeríti a szál identitását, így a mutexet csak az azt beszerző szál szabadíthatja fel. Ezzel szemben az osztály nem kényszeríti a Semaphore szálidentitást. A mutex át is adható az alkalmazás tartományhatárai között.

A mutexet birtokoló szál az ismétlődő hívások során ugyanazt a mutexet kérheti le anélkül, hogy WaitOne a végrehajtást akadályoznák. A szálnak azonban ugyanannyi alkalommal kell meghívnia a ReleaseMutex metódust a mutex tulajdonjogának felszabadításához.

Mivel az osztály öröklődikMutexWaitHandle, meghívhatja a statikus WaitHandle.WaitAll és WaitHandle.WaitAny a metódusokat is a védett erőforrásokhoz való hozzáférés szinkronizálásához.

Ha egy szál leáll egy mutex birtoklása közben, a mutex azt mondják, hogy elhagyják. A mutex állapota jelzésre van állítva, és a következő várakozási szál tulajdonjogot kap. A .NET-keretrendszer 2.0-s verziójától kezdve egy AbandonedMutexException kerül a következő szálba, amely az elhagyott mutexet szerzi be. A .NET-keretrendszer 2.0-s verziója előtt nem történt kivétel.

Figyelmeztetés

Az elhagyatott mutex gyakran súlyos hibát jelez a kódban. Ha egy szál a mutex feloldása nélkül lép ki, előfordulhat, hogy a mutex által védett adatstruktúrák nem lesznek konzisztens állapotban. A következő szál, amely a mutex tulajdonjogát kéri, képes kezelni ezt a kivételt, és továbblépni, ha az adatstruktúrák integritása ellenőrizhető.

Rendszerszintű mutex esetén egy elhagyott mutex azt jelezheti, hogy egy alkalmazás hirtelen leállt (például a Windows Task Manager használatával).

A mutexek két típusból állnak: a helyi mutexek, amelyek névtelenek, és nevesített rendszer-mutexek. Egy helyi mutex csak a programfolyamaton belül létezik. A folyamatot bármely olyan szál használhatja, amely hivatkozik a Mutex mutexet képviselő objektumra. Minden névtelen Mutex objektum egy külön helyi mutexet jelöl.

A névvel ellátott rendszer-mutexek az operációs rendszer egészében láthatók, és a folyamatok tevékenységeinek szinkronizálására használhatók. Egy névvel rendelkező konstruktor használatával létrehozhat egy Mutex nevet elfogadó objektumot, amely egy elnevezett rendszer-mutexet jelöl. Az operációsrendszer-objektum létrehozható egyszerre, vagy létezhet az objektum létrehozása Mutex előtt. Több Mutex objektumot is létrehozhat, amelyek ugyanazt a névvel ellátott rendszer-mutexet jelölik, és a OpenExisting metódus használatával megnyithat egy meglévő elnevezett rendszer-mutexet.

Note

A Terminálszolgáltatásokat futtató kiszolgálón a névvel ellátott rendszer mutexjei két láthatósági szinttel rendelkezhetnek. Ha a neve az előtaggal Global\kezdődik, a mutex minden terminálkiszolgáló-munkamenetben látható. Ha a neve az előtaggal Local\kezdődik, a mutex csak abban a terminálkiszolgálói munkamenetben látható, ahol létrejött. Ebben az esetben egy azonos nevű különálló mutex létezhet a kiszolgálón lévő többi terminálkiszolgáló-munkamenetben. Ha egy elnevezett mutex létrehozásakor nem ad meg előtagot, akkor az előtagot Local\veszi fel. Egy terminálkiszolgáló-munkameneten belül két mutex, amelyek neve csak az előtagjaik szerint különbözik, különálló mutexek, és mindkettő látható a terminálkiszolgáló-munkamenet összes folyamata számára. Vagyis az előtagok nevei Global\ és Local\ a mutex nevének hatóköre a terminálkiszolgáló-munkamenetekhez képest, nem pedig a folyamatokhoz viszonyítva.

Figyelmeztetés

Alapértelmezés szerint a névvel ellátott mutex nem korlátozódik az azt létrehozó felhasználóra. Más felhasználók megnyithatják és használhatják a mutexet, beleértve a mutex megzavarását a mutex beírásával és a kilépéssel. Unix-szerű operációs rendszereken a fájlrendszert a nevesített mutexek implementálásához használják, és más felhasználók jelentősebb módokon zavarhatják a nevesített mutexeket. A Windows adott felhasználók hozzáférésének korlátozásához konstruktor túlterhelést vagy MutexAcl használhat, és a névvel ellátott mutex létrehozásakor MutexSecurity továbbíthat. Unix-szerű operációs rendszereken jelenleg nincs mód a névvel ellátott mutexhez való hozzáférés korlátozására. Ne használjon elnevezett mutexeket hozzáférési korlátozások nélkül azokra a rendszerekre, amelyeken esetleg nem megbízható felhasználók futtatnak kódot.

A fordított perjel (\) egy fenntartott karakter a mutex nevében. Ne használjon fordított perjelet (\) a mutex nevében, kivéve azt a megjegyzést, amely a mutexek terminálkiszolgáló-munkamenetekben való használatára vonatkozó megjegyzésben van megadva. Ellenkező esetben előfordulhat, hogy a DirectoryNotFoundException rendszer egy meglévő fájlt jelöl, annak ellenére, hogy a mutex neve egy meglévő fájlt jelöl.

Konstruktorok

Name Description
Mutex()

Inicializálja az osztály új példányát Mutex alapértelmezett tulajdonságokkal.

Mutex(Boolean, String, Boolean, MutexSecurity)

Inicializálja az Mutex osztály egy új példányát logikai értékkel, amely azt jelzi, hogy a hívószálnak rendelkeznie kell-e a mutex kezdeti tulajdonosával, egy olyan sztringgel, amely a mutex neve, egy logikai változó, amely a metódus visszatérésekor azt jelzi, hogy a hívószál megkapta-e a mutex kezdeti tulajdonjogát, és a névvel ellátott mutexre alkalmazandó hozzáférés-vezérlési biztonságot.

Mutex(Boolean, String, Boolean)

Inicializálja az Mutex osztály új példányát logikai értékkel, amely azt jelzi, hogy a hívószálnak rendelkeznie kell-e a mutex kezdeti tulajdonjogával, egy sztringgel, amely a mutex neve, és egy logikai érték, amely a metódus visszatérésekor azt jelzi, hogy a hívószál megkapta-e a mutex kezdeti tulajdonjogát.

Mutex(Boolean, String, NamedWaitHandleOptions, Boolean)

Inicializálja az Mutex osztály új példányát logikai értékkel, amely azt jelzi, hogy a hívószálnak rendelkeznie kell-e a mutex kezdeti tulajdonosával, egy sztringgel, amely a mutex neve, a felhasználói hatókör és a munkamenet-hatókör hozzáférésének beállítására vonatkozó beállítások, valamint egy logikai érték, amely a metódus visszatérésekor azt jelzi, hogy a hívószál megkapta-e a mutex kezdeti tulajdonjogát.

Mutex(Boolean, String, NamedWaitHandleOptions)

Inicializálja az Mutex osztály új példányát logikai értékkel, amely azt jelzi, hogy a hívószálnak rendelkeznie kell-e a mutex kezdeti tulajdonosával, egy sztringgel, amely a mutex neve, valamint a felhasználói hatókör és a munkamenet-hatókör hozzáférésének beállítására vonatkozó beállításokat.

Mutex(Boolean, String)

Inicializálja az Mutex osztály új példányát logikai értékkel, amely jelzi, hogy a hívószálnak rendelkeznie kell-e a mutex kezdeti tulajdonosával, és egy sztringgel, amely a mutex neve.

Mutex(Boolean)

Inicializálja az Mutex osztály új példányát logikai értékkel, amely jelzi, hogy a hívószálnak rendelkeznie kell-e a mutex kezdeti tulajdonjogával.

Mutex(String, NamedWaitHandleOptions)

Inicializálja az Mutex osztály új példányát egy sztringgel, amely a mutex neve, valamint a felhasználói hatókör és a munkamenet-hatókör hozzáférésének beállítására vonatkozó beállítások. A hívószál nem kéri a mutex kezdeti tulajdonjogának meglétét.

Mezők

Name Description
WaitTimeout

Azt jelzi, hogy egy WaitAny(WaitHandle[], Int32, Boolean) művelet időtúllépést jelzett a várakozási fogópontok jelzése előtt. Ez a mező állandó.

(Öröklődés forrása WaitHandle)

Tulajdonságok

Name Description
Handle
Elavult.
Elavult.

Lekéri vagy beállítja a natív operációsrendszer-leírót.

(Öröklődés forrása WaitHandle)
SafeWaitHandle

Lekéri vagy beállítja a natív operációsrendszer-leírót.

(Öröklődés forrása WaitHandle)

Metódusok

Name Description
Close()

Az aktuális WaitHandleerőforrás összes erőforrását felszabadítja.

(Öröklődés forrása WaitHandle)
CreateObjRef(Type)

Létrehoz egy objektumot, amely tartalmazza a távoli objektumokkal való kommunikációhoz használt proxy létrehozásához szükséges összes releváns információt.

(Öröklődés forrása MarshalByRefObject)
Dispose()

Az osztály aktuális példánya által használt összes erőforrást felszabadítja WaitHandle .

(Öröklődés forrása WaitHandle)
Dispose(Boolean)

Ha egy származtatott osztályban felül van bírálva, kiadja a nem felügyelt erőforrásokat, amelyeket a WaitHandlerendszer használ, és opcionálisan felszabadítja a felügyelt erőforrásokat.

(Öröklődés forrása WaitHandle)
Equals(Object)

Meghatározza, hogy a megadott objektum egyenlő-e az aktuális objektummal.

(Öröklődés forrása Object)
GetAccessControl()

Lekéri a MutexSecurity névvel ellátott mutex hozzáférés-vezérlési biztonságát képviselő objektumot.

GetHashCode()

Ez az alapértelmezett kivonatoló függvény.

(Öröklődés forrása Object)
GetLifetimeService()
Elavult.

Lekéri a példány élettartamszabályzatát vezérlő aktuális élettartam-szolgáltatásobjektumot.

(Öröklődés forrása MarshalByRefObject)
GetType()

Lekéri az Type aktuális példányt.

(Öröklődés forrása Object)
InitializeLifetimeService()
Elavult.

Beolvas egy élettartam-szolgáltatásobjektumot a példány élettartam-szabályzatának szabályozásához.

(Öröklődés forrása MarshalByRefObject)
MemberwiseClone()

Az aktuális Objectpéldány sekély másolatát hozza létre.

(Öröklődés forrása Object)
MemberwiseClone(Boolean)

Az aktuális MarshalByRefObject objektum sekély másolatát hozza létre.

(Öröklődés forrása MarshalByRefObject)
OpenExisting(String, MutexRights)

Megnyitja a megadott nevű mutexet, ha már létezik, a kívánt biztonsági hozzáféréssel.

OpenExisting(String, NamedWaitHandleOptions)

Megnyitja a megadott nevű mutexet, ha már létezik. Ha a beállítások csak az aktuális felhasználóra vannak beállítva, a rendszer ellenőrzi az objektum hozzáférés-vezérlését a hívó felhasználó számára.

OpenExisting(String)

Megnyitja a megadott nevű mutexet, ha már létezik.

ReleaseMutex()

Mutex Az egyszeri kiadást adja ki.

SetAccessControl(MutexSecurity)

Beállítja egy névvel ellátott rendszer mutex hozzáférés-vezérlési biztonságát.

ToString()

Az aktuális objektumot jelképező sztringet ad vissza.

(Öröklődés forrása Object)
TryOpenExisting(String, Mutex)

Megnyitja a megadott elnevezett mutexet, ha már létezik, és visszaad egy értéket, amely jelzi, hogy a művelet sikeres volt-e.

TryOpenExisting(String, MutexRights, Mutex)

Megnyitja a megadott nevű mutexet, ha már létezik, a kívánt biztonsági hozzáféréssel, és visszaad egy értéket, amely jelzi, hogy a művelet sikeres volt-e.

TryOpenExisting(String, NamedWaitHandleOptions, Mutex)

Megnyitja a megadott elnevezett mutexet, ha már létezik, és visszaad egy értéket, amely jelzi, hogy a művelet sikeres volt-e. Ha a beállítások csak az aktuális felhasználóra vannak beállítva, a rendszer ellenőrzi az objektum hozzáférés-vezérlését a hívó felhasználó számára.

WaitOne()

Blokkolja az aktuális szálat, amíg az áram WaitHandle nem kap jelet.

(Öröklődés forrása WaitHandle)
WaitOne(Int32, Boolean)

Blokkolja az aktuális szálat, amíg az aktuális WaitHandle nem kap jelet, egy 32 bites aláírt egész számmal adja meg az időintervallumot, és adja meg, hogy a várakozás előtt ki kell-e lépnie a szinkronizálási tartományból.

(Öröklődés forrása WaitHandle)
WaitOne(Int32)

Blokkolja az aktuális szálat, amíg az aktuális WaitHandle nem kap jelet, egy 32 bites aláírt egész számmal adja meg az időintervallumot ezredmásodpercben.

(Öröklődés forrása WaitHandle)
WaitOne(TimeSpan, Boolean)

Letiltja az aktuális szálat, amíg az aktuális példány nem kap jelet, az időintervallum megadásához és annak megadásához, TimeSpan hogy a várakozás előtt kilépjen-e a szinkronizálási tartományból.

(Öröklődés forrása WaitHandle)
WaitOne(TimeSpan)

Letiltja az aktuális szálat, amíg az aktuális példány nem kap jelet az TimeSpan időintervallum megadásához.

(Öröklődés forrása WaitHandle)

Explicit interfész-implementációk

Name Description
IDisposable.Dispose()

Ez az API a termékinfrastruktúrát támogatja, és közvetlenül a kódból nem használható.

Felszabadítja a .-hez használt összes erőforrást WaitHandle.

(Öröklődés forrása WaitHandle)

Bővítő metódusok

Name Description
GetAccessControl(Mutex)

A megadott mutexbiztonsági leírókat adja vissza.

GetSafeWaitHandle(WaitHandle)

Lekéri a natív operációs rendszer várakozási fogópontjának biztonságos fogópontját.

SetAccessControl(Mutex, MutexSecurity)

Beállítja a megadott mutex biztonsági leíróit.

SetSafeWaitHandle(WaitHandle, SafeWaitHandle)

Beállít egy biztonságos fogópontot a natív operációs rendszer várakozási fogópontjához.

A következőre érvényes:

Szálbiztonság

Ez a típus szálbiztos.

Lásd még