Monitor.Wait Metod

Definition

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset.

Överlagringar

Name Description
Wait(Object, Int32, Boolean)

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön. Den här metoden anger också om synkroniseringsdomänen för kontexten (om i en synkroniserad kontext) avslutas innan väntan och återkrävs efteråt.

Wait(Object)

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset.

Wait(Object, Int32)

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön.

Wait(Object, TimeSpan)

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön.

Wait(Object, TimeSpan, Boolean)

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön. Du kan också avsluta synkroniseringsdomänen för den synkroniserade kontexten innan du väntar och hämtar domänen igen efteråt.

Wait(Object, Int32, Boolean)

Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön. Den här metoden anger också om synkroniseringsdomänen för kontexten (om i en synkroniserad kontext) avslutas innan väntan och återkrävs efteråt.

public:
 static bool Wait(System::Object ^ obj, int millisecondsTimeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait(object obj, int millisecondsTimeout, bool exitContext);
public static bool Wait(object obj, int millisecondsTimeout, bool exitContext);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * int * bool -> bool
static member Wait : obj * int * bool -> bool
Public Shared Function Wait (obj As Object, millisecondsTimeout As Integer, exitContext As Boolean) As Boolean

Parametrar

obj
Object

Objektet som du vill vänta på.

millisecondsTimeout
Int32

Antalet millisekunder som ska vänta innan tråden går in i den färdiga kön.

exitContext
Boolean

trueför att avsluta och återkräv synkroniseringsdomänen för kontexten (om i en synkroniserad kontext) före väntan. annars . false

Returer

true om låset har återkrävts innan den angivna tiden förflutit; false om låset har återkrävts efter den angivna tiden. Metoden returneras inte förrän låset har återkrävts.

Attribut

Undantag

Parametern obj är null.

Wait anropas inte inifrån ett synkroniserat kodblock.

Tråden som anropar Wait avbryts senare från väntetillståndet. Detta händer när en annan tråd anropar den här trådens Interrupt() metod.

Värdet för parametern millisecondsTimeout är negativt och är inte lika med Infinite.

Kommentarer

Mer information om det här API:et finns i Kompletterande API-kommentarer för Monitor.Wait.

Se även

Gäller för

Wait(Object)

Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset.

public:
 static bool Wait(System::Object ^ obj);
public static bool Wait(object obj);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait(object obj);
static member Wait : obj -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj -> bool
Public Shared Function Wait (obj As Object) As Boolean

Parametrar

obj
Object

Objektet som du vill vänta på.

Returer

true om anropet returnerades eftersom anroparen återkrävde låset för det angivna objektet. Den här metoden returnerar inte om låset inte har återkrävts.

Attribut

Undantag

Parametern obj är null.

Den anropande tråden äger inte låset för det angivna objektet.

Tråden som anropar Wait avbryts senare från väntetillståndet. Detta händer när en annan tråd anropar den här trådens Interrupt() metod.

Kommentarer

Tråden som för närvarande äger låset på det angivna objektet anropar den här metoden för att frigöra objektet så att en annan tråd kan komma åt det. Anroparen blockeras i väntan på att få tillbaka låset. Den här metoden anropas när anroparen behöver vänta på en tillståndsändring som inträffar till följd av en annan tråds åtgärder.

När en tråd anropar Waitsläpper den låset på objektet och anger objektets väntande kö. Nästa tråd i objektets redo kö (om det finns en) hämtar låset och har exklusiv användning av objektet. Alla trådar som anropar Wait finns kvar i väntekön tills de får en signal från Pulse eller PulseAll, som skickas av låsets ägare. Om Pulse skickas påverkas endast tråden längst upp i väntekön. Om PulseAll skickas påverkas alla trådar som väntar på objektet. När signalen tas emot lämnar en eller flera trådar den väntande kön och anger den färdiga kön. En tråd i den färdiga kön tillåts att återkräv låset.

Den här metoden returnerar när den anropande tråden återställer låset på objektet. Observera att den här metoden blockeras på obestämd tid om låshållaren inte anropar Pulse eller PulseAll.

Anroparen kör Wait en gång, oavsett hur många gånger Enter anropats för det angivna objektet. Konceptuellt Wait lagrar metoden det antal gånger som anroparen anropade Enter objektet och anropar Exit så många gånger som det behövs för att helt frigöra det låsta objektet. Anroparen blockerar sedan i väntan på att återfå objektet. När anroparen återfår låset, anropar systemet Enter så många gånger som det behövs för att återställa det sparade Enter antalet för anroparen. När du anropar Wait frigörs låset endast för det angivna objektet. Om anroparen är ägare till lås på andra objekt släpps inte dessa lås.

Observera att ett synkroniserat objekt innehåller flera referenser, inklusive en referens till tråden som för närvarande innehåller låset, en referens till den färdiga kön, som innehåller trådarna som är redo att hämta låset och en referens till den väntande kön, som innehåller trådarna som väntar på meddelande om en ändring i objektets tillstånd.

Metoderna Pulse, PulseAlloch Wait måste anropas inifrån ett synkroniserat kodblock.

Kommentarerna för Pulse metoden förklarar vad som händer om Pulse anropas när inga trådar väntar.

Se även

Gäller för

Wait(Object, Int32)

Källa:
Monitor.CoreCLR.cs
Källa:
Monitor.cs
Källa:
Monitor.CoreCLR.cs
Källa:
Monitor.CoreCLR.cs
Källa:
Monitor.CoreCLR.cs

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön.

public:
 static bool Wait(System::Object ^ obj, int millisecondsTimeout);
public static bool Wait(object obj, int millisecondsTimeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait(object obj, int millisecondsTimeout);
static member Wait : obj * int -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * int -> bool
Public Shared Function Wait (obj As Object, millisecondsTimeout As Integer) As Boolean

Parametrar

obj
Object

Objektet som du vill vänta på.

millisecondsTimeout
Int32

Antalet millisekunder som ska vänta innan tråden går in i den färdiga kön.

Returer

true om låset har återkrävts innan den angivna tiden förflutit; false om låset har återkrävts efter den angivna tiden. Metoden returneras inte förrän låset har återkrävts.

Attribut

Undantag

Parametern obj är null.

Den anropande tråden äger inte låset för det angivna objektet.

Tråden som anropar Wait avbryts senare från väntetillståndet. Detta händer när en annan tråd anropar den här trådens Interrupt() metod.

Värdet för parametern millisecondsTimeout är negativt och är inte lika med Infinite.

Kommentarer

Den här metoden returnerar inte innan den återfår ett exklusivt lås på parametern obj.

Tråden som för närvarande äger låset på det angivna objektet anropar den här metoden för att frigöra objektet så att en annan tråd kan komma åt det. Anroparen blockeras i väntan på att få tillbaka låset. Den här metoden anropas när anroparen behöver vänta på en tillståndsändring som inträffar till följd av en annan tråds åtgärder.

Tidsgränsen säkerställer att den aktuella tråden inte blockeras på obestämd tid om en annan tråd släpper låset utan att först anropa Pulse metoden eller PulseAll . Den flyttar också tråden till den färdiga kön och kringgår andra trådar framför den i väntekön, så att den kan hämta låset tidigare. Tråden kan testa returvärdet för Wait metoden för att avgöra om den återkrävde låset före tidsgränsen. Tråden kan utvärdera de villkor som gjorde att den gick in i väntetillståndet och vid behov anropa Wait metoden igen.

När en tråd anropar Waitsläpper den låset på objektet och anger objektets väntande kö. Nästa tråd i objektets redo kö (om det finns en) hämtar låset och har exklusiv användning av objektet. Tråden som anropade Wait finns kvar i väntekön tills antingen en tråd som innehåller låset anropar PulseAll, eller så är det nästa i kön och en tråd som innehåller låset anropar Pulse. Men om millisecondsTimeout det förflutit innan en annan tråd anropar objektets Pulse eller metoden PulseAll, flyttas den ursprungliga tråden till beredskapskön för att återfå låset.

Note

Om Infinite anges för parametern millisecondsTimeout blockeras den här metoden på obestämd tid om inte låsets innehavare anropar Pulse eller PulseAll. Om millisecondsTimeout är lika med 0 frigör tråden som anropar Wait låset och går sedan omedelbart in i kön för redo trådar för att återfå låset.

Anroparen kör Wait en gång, oavsett hur många gånger Enter anropats för det angivna objektet. Konceptuellt Wait lagrar metoden det antal gånger som anroparen anropade Enter objektet och anropar Exit så många gånger som det behövs för att helt frigöra det låsta objektet. Anroparen blockerar sedan i väntan på att återfå objektet. När anroparen återfår låset, anropar systemet Enter så många gånger som det behövs för att återställa det sparade Enter antalet för anroparen. När du anropar Wait frigörs låset endast för det angivna objektet. Om anroparen är ägare till lås på andra objekt släpps inte dessa lås.

Note

Ett synkroniserat objekt innehåller flera referenser, inklusive en referens till tråden som för närvarande innehåller låset, en referens till den färdiga kön, som innehåller trådarna som är redo att hämta låset och en referens till väntekön, som innehåller trådarna som väntar på meddelande om en ändring i objektets tillstånd.

Metoderna Pulse, PulseAlloch Wait måste anropas inifrån ett synkroniserat kodblock.

Kommentarerna för Pulse metoden förklarar vad som händer om Pulse anropas när inga trådar väntar.

Se även

Gäller för

Wait(Object, TimeSpan)

Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön.

public:
 static bool Wait(System::Object ^ obj, TimeSpan timeout);
public static bool Wait(object obj, TimeSpan timeout);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait(object obj, TimeSpan timeout);
static member Wait : obj * TimeSpan -> bool
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * TimeSpan -> bool
Public Shared Function Wait (obj As Object, timeout As TimeSpan) As Boolean

Parametrar

obj
Object

Objektet som du vill vänta på.

timeout
TimeSpan

En TimeSpan som representerar hur lång tid det går att vänta innan tråden går in i den färdiga kön.

Returer

true om låset har återkrävts innan den angivna tiden förflutit; false om låset har återkrävts efter den angivna tiden. Metoden returneras inte förrän låset har återkrävts.

Attribut

Undantag

Parametern obj är null.

Den anropande tråden äger inte låset för det angivna objektet.

Tråden som anropar Wait avbryts senare från väntetillståndet. Detta händer när en annan tråd anropar den här trådens Interrupt() metod.

Värdet för parametern timeout i millisekunder är negativt och representerar Infinite inte (-1 millisekunder) eller är större än Int32.MaxValue.

Kommentarer

Den här metoden returnerar inte innan den återfår ett exklusivt lås på parametern obj.

Tråden som för närvarande äger låset på det angivna objektet anropar den här metoden för att frigöra objektet så att en annan tråd kan komma åt det. Anroparen blockeras i väntan på att få tillbaka låset. Den här metoden anropas när anroparen behöver vänta på en tillståndsändring som inträffar till följd av en annan tråds åtgärder.

Tidsgränsen säkerställer att den aktuella tråden inte blockeras på obestämd tid om en annan tråd släpper låset utan att först anropa Pulse metoden eller PulseAll . Den flyttar också tråden till den färdiga kön och kringgår andra trådar framför den i väntekön, så att den kan hämta låset tidigare. Tråden kan testa returvärdet för Wait metoden för att avgöra om den återkrävde låset före tidsgränsen. Tråden kan utvärdera de villkor som gjorde att den gick in i väntetillståndet och vid behov anropa Wait metoden igen.

När en tråd anropar Waitsläpper den låset på objektet och anger objektets väntande kö. Nästa tråd i objektets redo kö (om det finns en) hämtar låset och har exklusiv användning av objektet. Tråden som anropade Wait finns kvar i väntekön tills antingen en tråd som innehåller låset anropar PulseAll, eller så är det nästa i kön och en tråd som innehåller låset anropar Pulse. Men om timeout det förflutit innan en annan tråd anropar objektets Pulse eller metoden PulseAll, flyttas den ursprungliga tråden till beredskapskön för att återfå låset.

Note

Om en TimeSpan som representerar -1 millisekund anges för parametern timeout blockeras den här metoden på obestämd tid såvida inte låshållaren anropar Pulse eller PulseAll. Om timeout är 0 millisekunder, släpper tråden som anropar Wait låset och går direkt in i körkön för att återta låset.

Anroparen kör Wait en gång, oavsett hur många gånger Enter anropats för det angivna objektet. Konceptuellt Wait lagrar metoden det antal gånger som anroparen anropade Enter objektet och anropar Exit så många gånger som det behövs för att helt frigöra det låsta objektet. Anroparen blockerar sedan i väntan på att återfå objektet. När anroparen återfår låset, anropar systemet Enter så många gånger som det behövs för att återställa det sparade Enter antalet för anroparen. När du anropar Wait frigörs låset endast för det angivna objektet. Om anroparen är ägare till lås på andra objekt släpps inte dessa lås.

Note

Ett synkroniserat objekt innehåller flera referenser, inklusive en referens till tråden som för närvarande innehåller låset, en referens till den färdiga kön, som innehåller trådarna som är redo att hämta låset och en referens till väntekön, som innehåller trådarna som väntar på meddelande om en ändring i objektets tillstånd.

Metoderna Pulse, PulseAlloch Wait måste anropas inifrån ett synkroniserat kodblock.

Kommentarerna för Pulse metoden förklarar vad som händer om Pulse anropas när inga trådar väntar.

Se även

Gäller för

Wait(Object, TimeSpan, Boolean)

Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs
Källa:
Monitor.cs

Frigör låset på ett objekt och blockerar den aktuella tråden tills den tar igen låset. Om det angivna tidsgränsintervallet förflutit anger tråden den färdiga kön. Du kan också avsluta synkroniseringsdomänen för den synkroniserade kontexten innan du väntar och hämtar domänen igen efteråt.

public:
 static bool Wait(System::Object ^ obj, TimeSpan timeout, bool exitContext);
[System.Runtime.Versioning.UnsupportedOSPlatform("browser")]
public static bool Wait(object obj, TimeSpan timeout, bool exitContext);
public static bool Wait(object obj, TimeSpan timeout, bool exitContext);
[<System.Runtime.Versioning.UnsupportedOSPlatform("browser")>]
static member Wait : obj * TimeSpan * bool -> bool
static member Wait : obj * TimeSpan * bool -> bool
Public Shared Function Wait (obj As Object, timeout As TimeSpan, exitContext As Boolean) As Boolean

Parametrar

obj
Object

Objektet som du vill vänta på.

timeout
TimeSpan

En TimeSpan som representerar hur lång tid det går att vänta innan tråden går in i den färdiga kön.

exitContext
Boolean

trueför att avsluta och återkräv synkroniseringsdomänen för kontexten (om i en synkroniserad kontext) före väntan. annars . false

Returer

true om låset har återkrävts innan den angivna tiden förflutit; false om låset har återkrävts efter den angivna tiden. Metoden returneras inte förrän låset har återkrävts.

Attribut

Undantag

Parametern obj är null.

Wait anropas inte inifrån ett synkroniserat kodblock.

Tråden som anropar Wait avbryts senare från väntetillståndet. Detta händer när en annan tråd anropar den här trådens Interrupt() metod.

Parametern timeout är negativ och representerar Infinite inte (-1 millisekunder) eller är större än Int32.MaxValue.

Kommentarer

Mer information om det här API:et finns i Kompletterande API-kommentarer för Monitor.Wait.

Se även

Gäller för