Mutex Klas

Definitie

Een synchronisatieprimitief dat ook kan worden gebruikt voor synchronisatie tussen processen.

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
Overname
Overname
Kenmerken

Voorbeelden

In dit voorbeeld ziet u hoe een lokaal Mutex object wordt gebruikt om de toegang tot een beveiligde resource te synchroniseren. Omdat elke aanroepende thread wordt geblokkeerd totdat deze eigenaar wordt van de mutex, moet deze de methode aanroepen om het ReleaseMutex eigendom van de mutex vrij te geven.

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

In het volgende voorbeeld roept elke thread de WaitOne(Int32) methode aan om de mutex te verkrijgen. Als het time-outinterval is verstreken, retourneert falsede methode en verkrijgt de thread de mutex niet en krijgt de mutex geen toegang tot de resource die de mutex beveiligt. De ReleaseMutex methode wordt alleen aangeroepen door de thread die de mutex verkrijgt.

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

Opmerkingen

Wanneer twee of meer threads tegelijkertijd toegang nodig hebben tot een gedeelde resource, heeft het systeem een synchronisatiemechanisme nodig om ervoor te zorgen dat slechts één thread tegelijk de resource gebruikt. Mutex is een synchronisatieprimitief dat exclusieve toegang tot de gedeelde resource verleent aan slechts één thread. Als een thread een mutex verkrijgt, wordt de tweede thread die die mutex wil verkrijgen, onderbroken totdat de eerste thread de mutex vrijgeeft.

Important

Met dit type wordt de IDisposable interface geïmplementeerd. Wanneer u klaar bent met het gebruik van het type, moet u het direct of indirect verwijderen. Als u het type rechtstreeks wilt verwijderen, roept u de Dispose methode aan in een try/catch blok. Als u deze indirect wilt verwijderen, gebruikt u een taalconstructie zoals using (in C#) of Using (in Visual Basic). Zie de sectie 'Using an Object that Implements IDisposable' (Een object gebruiken dat IDisposable implementeert) in het IDisposable interfaceonderwerp voor meer informatie.

U kunt de WaitHandle.WaitOne methode gebruiken om het eigendom van een mutex aan te vragen. De aanroepende thread blokkeert totdat een van de volgende handelingen plaatsvindt:

  • De mutex wordt gesignaleerd om aan te geven dat deze niet eigendom is. Wanneer dit gebeurt, retourneert WaitOnede true methode en gaat de aanroepende thread ervan uit dat de mutex eigendom is en dat de resource wordt geopend die wordt beveiligd door de mutex. Wanneer de resource is geopend, moet de thread de ReleaseMutex methode aanroepen om het eigendom van de mutex vrij te geven. In het eerste voorbeeld in de sectie Voorbeelden ziet u dit patroon.

  • Het time-outinterval dat is opgegeven in de aanroep naar een WaitOne methode waarvoor een millisecondsTimeout of timeout parameter is verstreken. Wanneer dit gebeurt, retourneert WaitOnede false methode en probeert de aanroepende thread geen eigendom van de mutex te verkrijgen. In dit geval moet u uw code structuren zodat toegang tot de resource die wordt beveiligd door de mutex, wordt geweigerd aan de aanroepende thread. Omdat de thread nooit het eigendom van de mutex heeft verkregen, mag deze de ReleaseMutex methode niet aanroepen. In het tweede voorbeeld in de sectie Voorbeelden ziet u dit patroon.

De Mutex klasse dwingt threadidentiteit af, zodat een mutex alleen kan worden vrijgegeven door de thread die deze heeft verkregen. De klasse dwingt daarentegen Semaphore geen threadidentiteit af. Een mutex kan ook worden doorgegeven aan de grenzen van het toepassingsdomein.

De thread die eigenaar is van een mutex kan dezelfde mutex aanvragen in herhaalde aanroepen WaitOne zonder de uitvoering ervan te blokkeren. De thread moet echter hetzelfde aantal keren de ReleaseMutex methode aanroepen om het eigendom van de mutex vrij te geven.

Omdat de Mutex klasse wordt overgenomen van WaitHandle, kunt u ook de statische WaitHandle.WaitAll en WaitHandle.WaitAny methoden aanroepen om de toegang tot een beveiligde resource te synchroniseren.

Als een thread wordt beëindigd tijdens het bezit van een mutex, wordt gezegd dat de mutex wordt afgebroken. De status van de mutex is ingesteld op gesignaleerd en de volgende wachtthread krijgt eigendom. Vanaf versie 2.0 van het .NET Framework wordt er een AbandonedMutexException gegenereerd in de volgende thread waarmee de verlaten mutex wordt verkregen. Vóór versie 2.0 van het .NET Framework is er geen uitzondering opgetreden.

Caution

Een verlaten mutex duidt vaak op een ernstige fout in de code. Wanneer een thread wordt afgesloten zonder de mutex vrij te geven, hebben de gegevensstructuren die door de mutex worden beveiligd, mogelijk niet in een consistente status. De volgende thread om het eigendom van de mutex aan te vragen, kan deze uitzondering verwerken en doorgaan als de integriteit van de gegevensstructuren kan worden geverifieerd.

In het geval van een systeem-brede mutex kan een achtergelaten mutex erop wijzen dat een toepassing plotseling is beëindigd (bijvoorbeeld met behulp van Windows Taakbeheer).

Mutexes zijn van twee typen: lokale mutexes, die geen naam hebben, en benoemde systeemmutexes. Een lokale mutex bestaat alleen binnen uw proces. Het kan worden gebruikt door elke thread in uw proces met een verwijzing naar het Mutex object dat de mutex vertegenwoordigt. Elk niet-benoemd Mutex object vertegenwoordigt een afzonderlijke lokale mutex.

Benoemde systeemmutexes zijn zichtbaar in het hele besturingssysteem en kunnen worden gebruikt om de activiteiten van processen te synchroniseren. U kunt een Mutex object maken dat een benoemde systeemmutex vertegenwoordigt met behulp van een constructor die een naam accepteert. Het besturingssysteemobject kan tegelijkertijd worden gemaakt of kan bestaan voordat het Mutex object wordt gemaakt. U kunt meerdere Mutex objecten maken die dezelfde benoemde systeemmutex vertegenwoordigen en u kunt de OpenExisting methode gebruiken om een bestaande benoemde systeemmutex te openen.

Note

Op een server waarop Terminal Services wordt uitgevoerd, kan een benoemde systeemmutex twee zichtbaarheidsniveaus hebben. Als de naam begint met het voorvoegsel Global\, is de mutex zichtbaar in alle terminalserversessies. Als de naam begint met het voorvoegsel Local\, is de mutex alleen zichtbaar in de terminalserversessie waar deze is gemaakt. In dat geval kan er een afzonderlijke mutex met dezelfde naam bestaan in elk van de andere terminalserversessies op de server. Als u geen voorvoegsel opgeeft wanneer u een benoemde mutex maakt, wordt het voorvoegsel Local\gebruikt. Binnen een terminalserversessie zijn twee mutexes waarvan de namen alleen verschillen door hun voorvoegsels afzonderlijke mutexes, en beide zijn zichtbaar voor alle processen in de terminalserversessie. Dat wil gezegd: de namen van voorvoegsels Global\ en Local\ beschrijven het bereik van de mutex-naam ten opzichte van terminalserversessies, niet ten opzichte van processen.

Caution

Standaard is een benoemde mutex niet beperkt tot de gebruiker die deze heeft gemaakt. Andere gebruikers kunnen de mutex mogelijk openen en gebruiken, inclusief het verstoren van de mutex door de mutex in te voeren en niet af te sluiten. Op Unix-achtige besturingssystemen wordt het bestandssysteem gebruikt in de implementatie van benoemde mutexes en kunnen andere gebruikers op significantere manieren met benoemde mutexes interfereren. Op Windows kunt u de toegang tot specifieke gebruikers beperken door een constructoroverbelasting of MutexAcl te gebruiken en een MutexSecurity door te geven bij het maken van de benoemde mutex. Op Unix-achtige besturingssystemen is momenteel geen manier om de toegang tot een benoemde mutex te beperken. Vermijd het gebruik van benoemde mutexes zonder toegangsbeperkingen voor systemen waarop mogelijk niet-vertrouwde gebruikers code uitvoeren.

De backslash (\) is een gereserveerd teken in een mutex-naam. Gebruik geen backslash (\) in een mutex-naam, behalve zoals opgegeven in de opmerking over het gebruik van mutexes in terminalserversessies. Anders kan er een DirectoryNotFoundException worden gegenereerd, ook al vertegenwoordigt de naam van de mutex een bestaand bestand.

Constructors

Name Description
Mutex()

Initialiseert een nieuw exemplaar van de Mutex klasse met standaardeigenschappen.

Mutex(Boolean, String, Boolean, MutexSecurity)

Initialiseert een nieuw exemplaar van de Mutex klasse met een Booleaanse waarde die aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex moet hebben, een tekenreeks die de naam van de mutex is, een Booleaanse variabele die, wanneer de methode retourneert, aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex heeft gekregen en de beveiliging voor toegangsbeheer die moet worden toegepast op de benoemde mutex.

Mutex(Boolean, String, Boolean)

Initialiseert een nieuw exemplaar van de Mutex klasse met een Booleaanse waarde die aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex moet hebben, een tekenreeks die de naam van de mutex is en een Booleaanse waarde die, wanneer de methode retourneert, aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex heeft gekregen.

Mutex(Boolean, String, NamedWaitHandleOptions, Boolean)

Initialiseert een nieuw exemplaar van de Mutex klasse met een Booleaanse waarde die aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex moet hebben, een tekenreeks die de naam is van de mutex, opties voor het instellen van toegang tot het gebruikersbereik en sessiebereik, en een Booleaanse waarde die, wanneer de methode retourneert, aangeeft of de aanroepende thread het eerste eigendom van de mutex is verleend.

Mutex(Boolean, String, NamedWaitHandleOptions)

Initialiseert een nieuw exemplaar van de Mutex klasse met een Booleaanse waarde die aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex moet hebben, een tekenreeks die de naam van de mutex is en opties voor het instellen van toegang tot gebruikersbereik en sessiebereik.

Mutex(Boolean, String)

Initialiseert een nieuw exemplaar van de Mutex klasse met een Booleaanse waarde die aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex moet hebben en een tekenreeks die de naam van de mutex is.

Mutex(Boolean)

Initialiseert een nieuw exemplaar van de Mutex klasse met een Booleaanse waarde die aangeeft of de aanroepende thread het oorspronkelijke eigendom van de mutex moet hebben.

Mutex(String, NamedWaitHandleOptions)

Initialiseert een nieuw exemplaar van de Mutex klasse met een tekenreeks die de naam is van de mutex en opties voor het instellen van gebruikersbereik en sessiebereiktoegang. De aanroepende thread vraagt niet om het oorspronkelijke eigendom van de mutex.

Velden

Name Description
WaitTimeout

Geeft aan dat er een time-out optreedt voordat een WaitAny(WaitHandle[], Int32, Boolean) van de wachtgrepen is gesignaleerd. Dit veld is constant.

(Overgenomen van WaitHandle)

Eigenschappen

Name Description
Handle
Verouderd.
Verouderd.

Hiermee haalt u de systeemeigen ingang van het besturingssysteem op of stelt u deze in.

(Overgenomen van WaitHandle)
SafeWaitHandle

Hiermee haalt u de systeemeigen ingang van het besturingssysteem op of stelt u deze in.

(Overgenomen van WaitHandle)

Methoden

Name Description
Close()

Alle resources die door de huidige WaitHandleresources worden bewaard, worden vrijgegeven.

(Overgenomen van WaitHandle)
CreateObjRef(Type)

Hiermee maakt u een object dat alle relevante informatie bevat die nodig is om een proxy te genereren die wordt gebruikt om te communiceren met een extern object.

(Overgenomen van MarshalByRefObject)
Dispose()

Alle resources die door het huidige exemplaar van de WaitHandle klasse worden gebruikt, worden vrijgegeven.

(Overgenomen van WaitHandle)
Dispose(Boolean)

Wanneer deze worden overschreven in een afgeleide klasse, worden de onbeheerde resources die door de WaitHandleklasse worden gebruikt, uitgebracht en worden de beheerde resources optioneel vrijgegeven.

(Overgenomen van WaitHandle)
Equals(Object)

Bepaalt of het opgegeven object gelijk is aan het huidige object.

(Overgenomen van Object)
GetAccessControl()

Hiermee haalt u een MutexSecurity object op dat de beveiliging van toegangsbeheer voor de benoemde mutex vertegenwoordigt.

GetHashCode()

Fungeert als de standaardhashfunctie.

(Overgenomen van Object)
GetLifetimeService()
Verouderd.

Hiermee haalt u het huidige levensduurserviceobject op waarmee het levensduurbeleid voor dit exemplaar wordt beheerd.

(Overgenomen van MarshalByRefObject)
GetType()

Hiermee haalt u de Type huidige instantie op.

(Overgenomen van Object)
InitializeLifetimeService()
Verouderd.

Hiermee haalt u een levensduurserviceobject op om het levensduurbeleid voor dit exemplaar te beheren.

(Overgenomen van MarshalByRefObject)
MemberwiseClone()

Hiermee maakt u een ondiepe kopie van de huidige Object.

(Overgenomen van Object)
MemberwiseClone(Boolean)

Hiermee maakt u een ondiepe kopie van het huidige MarshalByRefObject object.

(Overgenomen van MarshalByRefObject)
OpenExisting(String, MutexRights)

Hiermee opent u de opgegeven benoemde mutex, als deze al bestaat, met de gewenste beveiligingstoegang.

OpenExisting(String, NamedWaitHandleOptions)

Hiermee opent u de opgegeven benoemde mutex, als deze al bestaat. Als de opties alleen zijn ingesteld op de huidige gebruiker, worden de toegangsbeheer van het object geverifieerd voor de aanroepende gebruiker.

OpenExisting(String)

Hiermee opent u de opgegeven benoemde mutex, als deze al bestaat.

ReleaseMutex()

Brengt het Mutex één keer vrij.

SetAccessControl(MutexSecurity)

Hiermee stelt u de beveiliging voor toegangsbeheer voor een benoemd systeem mutex in.

ToString()

Retourneert een tekenreeks die het huidige object vertegenwoordigt.

(Overgenomen van Object)
TryOpenExisting(String, Mutex)

Hiermee opent u de opgegeven benoemde mutex, als deze al bestaat en retourneert u een waarde die aangeeft of de bewerking is geslaagd.

TryOpenExisting(String, MutexRights, Mutex)

Hiermee opent u de opgegeven benoemde mutex, als deze al bestaat, met de gewenste beveiligingstoegang en retourneert u een waarde die aangeeft of de bewerking is geslaagd.

TryOpenExisting(String, NamedWaitHandleOptions, Mutex)

Hiermee opent u de opgegeven benoemde mutex, als deze al bestaat en retourneert u een waarde die aangeeft of de bewerking is geslaagd. Als de opties alleen zijn ingesteld op de huidige gebruiker, worden de toegangsbeheer van het object geverifieerd voor de aanroepende gebruiker.

WaitOne()

Hiermee blokkeert u de huidige thread totdat de stroom WaitHandle een signaal ontvangt.

(Overgenomen van WaitHandle)
WaitOne(Int32, Boolean)

Hiermee blokkeert u de huidige thread totdat de huidige WaitHandle een signaal ontvangt, met behulp van een 32-bits ondertekend geheel getal om het tijdsinterval op te geven en op te geven of het synchronisatiedomein moet worden afgesloten voordat de wacht wordt uitgevoerd.

(Overgenomen van WaitHandle)
WaitOne(Int32)

Hiermee blokkeert u de huidige thread totdat de huidige WaitHandle een signaal ontvangt, met behulp van een 32-bits ondertekend geheel getal om het tijdsinterval in milliseconden op te geven.

(Overgenomen van WaitHandle)
WaitOne(TimeSpan, Boolean)

Hiermee blokkeert u de huidige thread totdat het huidige exemplaar een signaal ontvangt, met behulp van een TimeSpan om het tijdsinterval op te geven en op te geven of het synchronisatiedomein moet worden afgesloten voordat de wacht wordt uitgevoerd.

(Overgenomen van WaitHandle)
WaitOne(TimeSpan)

Hiermee blokkeert u de huidige thread totdat het huidige exemplaar een signaal ontvangt met behulp van een TimeSpan signaal om het tijdsinterval op te geven.

(Overgenomen van WaitHandle)

Expliciete interface-implementaties

Name Description
IDisposable.Dispose()

Deze API ondersteunt de productinfrastructuur en is niet bedoeld om rechtstreeks vanuit de code te gebruiken.

Alle resources die worden gebruikt door de WaitHandle.

(Overgenomen van WaitHandle)

Extensiemethoden

Name Description
GetAccessControl(Mutex)

Retourneert de beveiligingsdescriptors voor de opgegeven mutex.

GetSafeWaitHandle(WaitHandle)

Hiermee haalt u de veilige ingang voor een systeemeigen wachtgreep van het besturingssysteem op.

SetAccessControl(Mutex, MutexSecurity)

Hiermee stelt u de beveiligingsdescriptors voor de opgegeven mutex in.

SetSafeWaitHandle(WaitHandle, SafeWaitHandle)

Hiermee stelt u een veilige ingang in voor een systeemeigen wachtgreep voor het besturingssysteem.

Van toepassing op

Veiligheid thread

Dit type is thread veilig.

Zie ook