Monitor.Wait Yöntem
Tanım
Önemli
Bazı bilgiler ürünün ön sürümüyle ilgilidir ve sürüm öncesinde önemli değişiklikler yapılmış olabilir. Burada verilen bilgilerle ilgili olarak Microsoft açık veya zımni hiçbir garanti vermez.
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ı.