Aracılığıyla paylaş


Monitor.Wait Yöntem

Tanım

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller.

Aşırı Yüklemeler

Wait(Object, Int32, Boolean)

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer. Bu yöntem ayrıca bağlam için eşitleme etki alanında (eşitlenmiş bir bağlamdaysa) beklemeden önce çıkılıp çıkılmayacağını ve daha sonra yeniden alınıp alınmayacağını belirtir.

Wait(Object)

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller.

Wait(Object, Int32)

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer.

Wait(Object, TimeSpan)

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer.

Wait(Object, TimeSpan, Boolean)

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer. İsteğe bağlı olarak, beklemeden önce eşitlenen bağlam için eşitleme etki alanından çıkar ve daha sonra etki alanını yeniden alır.

Wait(Object, Int32, Boolean)

Kaynak:
Monitor.cs
Kaynak:
Monitor.cs
Kaynak:
Monitor.cs

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer. Bu yöntem ayrıca bağlam için eşitleme etki alanında (eşitlenmiş bir bağlamdaysa) beklemeden önce çıkılıp çıkılmayacağını ve daha sonra yeniden alınıp alınmayacağını belirtir.

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

Parametreler

obj
Object

Üzerinde bekleyebileceğiniz nesne.

millisecondsTimeout
Int32

İş parçacığı hazır kuyruğa girmeden önce beklenen milisaniye sayısı.

exitContext
Boolean

true beklemeden önce bağlam için eşitleme etki alanından çıkmak ve yeniden almak için (eşitlenmiş bir bağlamdaysa); aksi takdirde , false.

Döndürülenler

true belirtilen süre tamamlanmadan önce kilit yeniden alındıysa; false belirtilen süre geçtikten sonra kilit yeniden alındıysa. Yöntem, kilit yeniden alınana kadar döndürülmüyor.

Öznitelikler

Özel durumlar

obj parametresidirnull.

Wait eşitlenmiş bir kod bloğu içinden çağrılmıyor.

Çağıran Wait iş parçacığı daha sonra bekleme durumundan kesilir. Başka bir iş parçacığı bu iş parçacığının Interrupt() yöntemini çağırdığında bu durum ortaya çıkar.

parametresinin millisecondsTimeout değeri negatiftir ve değerine Infiniteeşit değildir.

Açıklamalar

Bu API hakkında daha fazla bilgi için bkz. Monitor.Wait için ek API açıklamaları.

Ayrıca bkz.

Şunlara uygulanır

Wait(Object)

Kaynak:
Monitor.cs
Kaynak:
Monitor.cs
Kaynak:
Monitor.cs

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller.

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

Parametreler

obj
Object

Üzerinde bekleyebileceğiniz nesne.

Döndürülenler

true çağıran belirtilen nesnenin kilidini yeniden aldığından çağrı döndürüldüyse. Kilit yeniden alınmazsa bu yöntem döndürülmüyor.

Öznitelikler

Özel durumlar

obj parametresidirnull.

Çağıran iş parçacığı belirtilen nesnenin kilidine sahip değil.

Çağıran Wait iş parçacığı daha sonra bekleme durumundan kesilir. Başka bir iş parçacığı bu iş parçacığının Interrupt() yöntemini çağırdığında bu durum ortaya çıkar.

Açıklamalar

Belirtilen nesnedeki kilidin şu anda sahibi olan iş parçacığı, başka bir iş parçacığının ona erişebilmesi için nesneyi serbest bırakmak için bu yöntemi çağırır. Arayan, kilidi yeniden almak için beklerken engellenir. Çağıranın başka bir iş parçacığının işlemleri sonucunda gerçekleşecek bir durum değişikliğini beklemesi gerektiğinde bu yöntem çağrılır.

bir iş parçacığı çağırdığında Wait, nesne üzerindeki kilidi serbest bırakır ve nesnenin bekleme kuyruğuna girer. Nesnenin hazır kuyruğundaki bir sonraki iş parçacığı (varsa) kilidi alır ve nesnenin özel kullanımına sahiptir. çağrısında Wait bulunan tüm iş parçacıkları, kilidin sahibi tarafından gönderilen veya PulseAll'den Pulse sinyal alınana kadar bekleme kuyruğunda kalır. gönderilirse Pulse , yalnızca bekleme kuyruğunun başındaki iş parçacığı etkilenir. gönderilirse PulseAll , nesneyi bekleyen tüm iş parçacıkları etkilenir. Sinyal alındığında, bir veya daha fazla iş parçacığı bekleme kuyruğundan çıkar ve hazır kuyruğu girer. Hazır kuyruktaki bir iş parçacığının kilidi yeniden almasına izin verilir.

Bu yöntem, çağıran iş parçacığı nesne üzerindeki kilidi yeniden alırsa döndürür. Kilidin sahibi veya PulseAllçağrılmazsa Pulse bu yöntemin süresiz olarak engellendiğini unutmayın.

Çağıran, belirtilen nesne için çağrılan sayıdan Enter bağımsız olarak bir kez yürütülürWait. Kavramsal olarak, Wait yöntemi çağıranın nesnede kaç kez çağırılacağını Enter depolar Exit ve kilitli nesneyi tam olarak serbest bırakmak için gereken sayıda çağrır. Çağıran daha sonra nesneyi yeniden almak için beklerken engeller. Çağıran kilidi yeniden aradığında sistem, çağıranın kaydedilen Enter sayısını geri yüklemek için gerektiği kadar çağrırEnter. Çağrısı Wait yalnızca belirtilen nesne için kilidi serbest bırakır; çağıran diğer nesnelerdeki kilitlerin sahibiyse, bu kilitler serbest bırakılmaz.

Eşitlenmiş bir nesnenin kilit tutan iş parçacığına başvuru, kilidi almak için hazır olan iş parçacıklarını içeren hazır kuyruğa başvuru ve nesnenin durumunda bir değişiklik bildirimi bekleyen iş parçacıklarını içeren bekleme kuyruğu başvurusu gibi çeşitli başvuruları barındırdığını unutmayın.

Pulse, PulseAllve Wait yöntemleri eşitlenmiş bir kod bloğu içinden çağrılmalıdır.

yöntemine yönelik Pulse açıklamalar, bekleyen bir iş parçacığı olmadığında çağrılırsa Pulse ne olacağını açıklar.

Ayrıca bkz.

Şunlara uygulanır

Wait(Object, Int32)

Kaynak:
Monitor.CoreCLR.cs
Kaynak:
Monitor.CoreCLR.cs
Kaynak:
Monitor.CoreCLR.cs

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer.

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

Parametreler

obj
Object

Üzerinde bekleyebileceğiniz nesne.

millisecondsTimeout
Int32

İş parçacığı hazır kuyruğa girmeden önce beklenen milisaniye sayısı.

Döndürülenler

true belirtilen süre tamamlanmadan önce kilit yeniden alındıysa; false belirtilen süre geçtikten sonra kilit yeniden alındıysa. Yöntem, kilit yeniden alınana kadar döndürülmüyor.

Öznitelikler

Özel durumlar

obj parametresidirnull.

Çağıran iş parçacığı belirtilen nesnenin kilidine sahip değil.

Çağıran Wait iş parçacığı daha sonra bekleme durumundan kesilir. Başka bir iş parçacığı bu iş parçacığının Interrupt() yöntemini çağırdığında bu durum ortaya çıkar.

parametresinin millisecondsTimeout değeri negatiftir ve değerine Infiniteeşit değildir.

Açıklamalar

Bu yöntem, parametresinde özel bir kilit alana obj kadar döndürmez.

Belirtilen nesnedeki kilidin şu anda sahibi olan iş parçacığı, başka bir iş parçacığının ona erişebilmesi için nesneyi serbest bırakmak için bu yöntemi çağırır. Arayan, kilidi yeniden almak için beklerken engellenir. Çağıranın başka bir iş parçacığının işlemleri sonucunda gerçekleşecek bir durum değişikliğini beklemesi gerektiğinde bu yöntem çağrılır.

Zaman aşımı, önce veya PulseAll yöntemini çağırmadan başka bir iş parçacığı kilidi serbest bırakırsa geçerli iş parçacığının Pulse süresiz olarak engellememesini sağlar. Ayrıca iş parçacığını hazır kuyruğa taşır ve bekleme kuyruğundaki diğer iş parçacıklarını atlayarak kilidi daha erken yeniden alabilir. İş parçacığı, zaman aşımından Wait önce kilidi yeniden alıp almadığını belirlemek için yönteminin dönüş değerini test edebilir. İş parçacığı beklemeye girmesine neden olan koşulları değerlendirebilir ve gerekirse yöntemini yeniden çağırabilir Wait .

bir iş parçacığı çağırdığında Wait, nesne üzerindeki kilidi serbest bırakır ve nesnenin bekleme kuyruğuna girer. Nesnenin hazır kuyruğundaki bir sonraki iş parçacığı (varsa) kilidi alır ve nesnenin özel kullanımına sahiptir. Çağrılan Wait iş parçacığı, kilidi tutan bir iş parçacığı çağırana PulseAllkadar bekleme kuyruğunda kalır veya kuyrukta bir sonraki iş parçacığıdır ve kilidi tutan bir iş parçacığı çağırır Pulse. Ancak, başka bir iş parçacığının bu nesnenin Pulse veya PulseAll yöntemini çağırmadan önce geçmesi durumundamillisecondsTimeout, kilidi yeniden kazanmak için özgün iş parçacığı hazır kuyruğa taşınır.

Not

parametresi için belirtilirseInfinite, kilit sahibi veya PulseAllçağrısı Pulse yapmadığı sürece bu yöntem süresiz olarak millisecondsTimeout engeller. 0'a eşitse millisecondsTimeout , çağıran Wait iş parçacığı kilidi serbest bırakır ve kilidi yeniden kazanmak için hemen hazır kuyruğa girer.

Çağıran, belirtilen nesne için çağrılan sayıdan Enter bağımsız olarak bir kez yürütülürWait. Kavramsal olarak, Wait yöntemi çağıranın nesnede kaç kez çağırılacağını Enter depolar Exit ve kilitli nesneyi tam olarak serbest bırakmak için gereken sayıda çağrır. Çağıran daha sonra nesneyi yeniden almak için beklerken engeller. Çağıran kilidi yeniden aradığında sistem, çağıranın kaydedilen Enter sayısını geri yüklemek için gerektiği kadar çağrırEnter. Çağrısı Wait yalnızca belirtilen nesne için kilidi serbest bırakır; çağıran diğer nesnelerdeki kilitlerin sahibiyse, bu kilitler serbest bırakılmaz.

Not

Eşitlenmiş nesne, kilidi tutan iş parçacığına başvuru, kilidi almak için hazır olan iş parçacıklarını içeren hazır kuyruğa başvuru ve nesnenin durumundaki bir değişikliğin bildirimini bekleyen iş parçacıklarını içeren bekleme kuyruğuna başvuru da dahil olmak üzere çeşitli başvurular içerir.

Pulse, PulseAllve Wait yöntemleri eşitlenmiş bir kod bloğu içinden çağrılmalıdır.

yöntemine yönelik Pulse açıklamalar, bekleyen bir iş parçacığı olmadığında çağrılırsa Pulse ne olacağını açıklar.

Ayrıca bkz.

Şunlara uygulanır

Wait(Object, TimeSpan)

Kaynak:
Monitor.cs
Kaynak:
Monitor.cs
Kaynak:
Monitor.cs

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer.

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

Parametreler

obj
Object

Üzerinde bekleyebileceğiniz nesne.

timeout
TimeSpan

İş TimeSpan parçacığı hazır kuyruğa girmeden önce beklenmesi gereken süreyi temsil eden.

Döndürülenler

true belirtilen süre tamamlanmadan önce kilit yeniden alındıysa; false belirtilen süre geçtikten sonra kilit yeniden alındıysa. Yöntem, kilit yeniden alınana kadar döndürülmüyor.

Öznitelikler

Özel durumlar

obj parametresidirnull.

Çağıran iş parçacığı belirtilen nesnenin kilidine sahip değil.

Çağıran Wait iş parçacığı daha sonra bekleme durumundan kesilir. Başka bir iş parçacığı bu iş parçacığının Interrupt() yöntemini çağırdığında bu durum ortaya çıkar.

Parametrenin timeout milisaniye cinsinden değeri negatiftir ve (-1 milisaniye) değerini temsil Infinite etmez veya Int32.MaxValue değerinden büyüktür.

Açıklamalar

Bu yöntem, parametresinde özel bir kilit yeniden elde edene obj kadar döndürmez.

Şu anda belirtilen nesnedeki kilidin sahibi olan iş parçacığı, nesneyi başka bir iş parçacığının erişebilmesi için serbest bırakmak için bu yöntemi çağırır. Arayan, kilidi yeniden almak için beklerken engellenir. Çağıranın başka bir iş parçacığının işlemlerinin sonucu olarak gerçekleşecek durum değişikliğini beklemesi gerektiğinde bu yöntem çağrılır.

Zaman aşımı, başka bir iş parçacığı önce veya PulseAll yöntemini çağırmadan kilidi serbest bırakırsa geçerli iş parçacığının Pulse süresiz olarak engellememesini sağlar. Ayrıca iş parçacığını hazır kuyruğa taşır ve bekleme kuyruğunda önündeki diğer iş parçacıklarını atlayarak kilidi daha önce yeniden alabilir. İş parçacığı, zaman aşımından Wait önce kilidi yeniden alıp almadığını belirlemek için yönteminin dönüş değerini test edebilir. İş parçacığı beklemeye girmesine neden olan koşulları değerlendirebilir ve gerekirse yöntemini yeniden çağırabilir Wait .

bir iş parçacığı çağırdığında Wait, nesnenin kilidini serbest bırakır ve nesnenin bekleme kuyruğuna girer. Nesnenin hazır kuyruğundaki bir sonraki iş parçacığı (varsa) kilidi alır ve nesnenin özel kullanımına sahiptir. Çağrılan Wait iş parçacığı, kilidi tutan bir iş parçacığı çağırana PulseAllkadar bekleme kuyruğunda kalır veya kuyrukta bir sonraki iş parçacığıdır ve kilidi tutan bir iş parçacığı çağırır Pulse. Ancak, başka bir iş parçacığının bu nesnenin Pulse veya PulseAll yöntemini çağırmadan önce geçmesi durumundatimeout, özgün iş parçacığı kilidi yeniden kazanmak için hazır kuyruğa taşınır.

Not

parametresi için timeout -1 milisaniyeyi temsil eden bir TimeSpan belirtilirse, kilit sahibi veya PulseAllçağrısı Pulse yapmadığı sürece bu yöntem süresiz olarak engeller. 0 milisaniye ise timeout , çağıran Wait iş parçacığı kilidi serbest bırakır ve kilidi yeniden kazanmak için hemen hazır kuyruğa girer.

Çağıran, belirtilen nesne için çağrılan sayıdan Enter bağımsız olarak bir kez yürütülürWait. Kavramsal olarak, Wait yöntemi çağıranın nesnede kaç kez çağrıldığı Enter depolar ve Exit kilitli nesneyi tam olarak serbest bırakmak için gerektiği kadar çağrır. Çağıran daha sonra nesneyi yeniden almak için beklerken engeller. Çağıran kilidi yeniden aradığında Enter sistem, çağıranın kayıtlı Enter sayısını geri yüklemek için gerektiği kadar çağrır. Çağrısı Wait yalnızca belirtilen nesne için kilidi serbest bırakır; çağıran diğer nesnelerdeki kilitlerin sahibiyse, bu kilitler serbest bırakılmaz.

Not

Eşitlenmiş bir nesne, kilidi tutan iş parçacığına başvuru, kilidi almak için hazır olan iş parçacıklarını içeren hazır kuyruğa başvuru ve nesnenin durumundaki bir değişikliğin bildirilmesi için bekleyen iş parçacıklarını içeren bekleme kuyruğuna başvuru gibi çeşitli başvuruları içerir.

Pulse, PulseAllve Wait yöntemleri eşitlenmiş bir kod bloğu içinden çağrılmalıdır.

yöntemine yönelik Pulse açıklamalar, bekleyen bir iş parçacığı olmadığında çağrılırsa Pulse ne olacağını açıklar.

Ayrıca bkz.

Şunlara uygulanır

Wait(Object, TimeSpan, Boolean)

Kaynak:
Monitor.cs
Kaynak:
Monitor.cs
Kaynak:
Monitor.cs

Bir nesne üzerindeki kilidi serbest bırakır ve kilidi yeniden alana kadar geçerli iş parçacığını engeller. Belirtilen zaman aşımı aralığı ularsa, iş parçacığı hazır kuyruğa girer. İsteğe bağlı olarak, beklemeden önce eşitlenen bağlam için eşitleme etki alanından çıkar ve daha sonra etki alanını yeniden alır.

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

Parametreler

obj
Object

Üzerinde bekleyebileceğiniz nesne.

timeout
TimeSpan

İş TimeSpan parçacığı hazır kuyruğa girmeden önce beklenmesi gereken süreyi temsil eden.

exitContext
Boolean

true beklemeden önce bağlam için eşitleme etki alanından çıkmak ve yeniden sorgulamak için (eşitlenmiş bir bağlamdaysa); aksi takdirde , false.

Döndürülenler

true belirtilen süre tamamlanmadan önce kilit yeniden alındıysa; false belirtilen süre geçtikten sonra kilit yeniden alındıysa. Yöntem, kilit yeniden alınana kadar döndürülmüyor.

Öznitelikler

Özel durumlar

obj parametresidirnull.

Wait eşitlenmiş bir kod bloğu içinden çağrılmıyor.

Wait çağıran iş parçacığı daha sonra bekleme durumundan kesilir. Başka bir iş parçacığı bu iş parçacığının Interrupt() yöntemini çağırdığında bu durum ortaya çıkar.

timeout Parametresi negatiftir ve (-1 milisaniye) değerini temsil Infinite etmez veya Int32.MaxValue değerinden büyüktür.

Açıklamalar

Bu API hakkında daha fazla bilgi için bkz . Monitor.Wait için ek API açıklamaları.

Ayrıca bkz.

Şunlara uygulanır