Monitor.Wait Metode

Definisi

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci.

Overload

Nama Deskripsi
Wait(Object, Int32, Boolean)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap. Metode ini juga menentukan apakah domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) keluar sebelum menunggu dan diminta kembali setelahnya.

Wait(Object)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci.

Wait(Object, Int32)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap.

Wait(Object, TimeSpan)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap.

Wait(Object, TimeSpan, Boolean)

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap. Secara opsional keluar dari domain sinkronisasi untuk konteks yang disinkronkan sebelum menunggu dan memperoleh kembali domain setelahnya.

Wait(Object, Int32, Boolean)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap. Metode ini juga menentukan apakah domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) keluar sebelum menunggu dan diminta kembali setelahnya.

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

Parameter

obj
Object

Objek tempat menunggu.

millisecondsTimeout
Int32

Jumlah milidetik untuk menunggu sebelum utas memasuki antrean siap.

exitContext
Boolean

true untuk keluar dan memperoleh kembali domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) sebelum menunggu; jika tidak, false.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Wait tidak dipanggil dari dalam blok kode yang disinkronkan.

Utas Wait yang memanggil kemudian terganggu dari status tunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Nilai millisecondsTimeout parameter negatif, dan tidak sama dengan Infinite.

Keterangan

Untuk informasi selengkapnya tentang API ini, lihat Komentar API tambahan untuk Monitor.Wait.

Lihat juga

Berlaku untuk

Wait(Object)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci.

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

Parameter

obj
Object

Objek tempat menunggu.

Mengembalikan

true jika panggilan dikembalikan karena penelepon memperoleh kembali kunci untuk objek yang ditentukan. Metode ini tidak mengembalikan jika kunci tidak diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Utas panggilan tidak memiliki kunci untuk objek yang ditentukan.

Utas Wait yang memanggil kemudian terganggu dari status tunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Keterangan

Utas yang saat ini memiliki kunci pada objek yang ditentukan memanggil metode ini untuk melepaskan objek sehingga utas lain dapat mengaksesnya. Pemanggil diblokir saat menunggu untuk memperoleh kembali kunci. Metode ini dipanggil ketika penelepon perlu menunggu perubahan status yang akan terjadi sebagai akibat dari operasi utas lain.

Saat utas Waitmemanggil , utas melepaskan kunci pada objek dan memasuki antrean tunggu objek. Utas berikutnya dalam antrean siap objek (jika ada) memperoleh kunci dan memiliki penggunaan objek secara eksklusif. Semua utas yang memanggil Wait tetap dalam antrean tunggu sampai mereka menerima sinyal dari Pulse atau PulseAll, yang dikirim oleh pemilik kunci. Jika Pulse dikirim, hanya utas di kepala antrean tunggu yang terpengaruh. Jika PulseAll dikirim, semua utas yang menunggu objek terpengaruh. Saat sinyal diterima, satu atau beberapa utas meninggalkan antrean tunggu dan memasukkan antrean siap. Utas dalam antrean siap diizinkan untuk memperoleh kembali kunci.

Metode ini kembali ketika utas panggilan memperoleh kembali kunci pada objek. Perhatikan bahwa metode ini memblokir tanpa batas waktu jika pemegang kunci tidak memanggil Pulse atau PulseAll.

Pemanggil mengeksekusi Wait sekali, terlepas dari berapa kali Enter telah dipanggil untuk objek yang ditentukan. Secara konseptual, Wait metode menyimpan berapa kali pemanggil dipanggil Enter pada objek dan memanggil Exit sebanyak yang diperlukan untuk sepenuhnya melepaskan objek terkunci. Pemanggil kemudian memblokir sambil menunggu untuk memperoleh kembali objek. Ketika penelepon memperoleh kembali kunci, sistem memanggil Enter sebanyak yang diperlukan untuk memulihkan jumlah tersimpan Enter untuk pemanggil. Memanggil Wait hanya melepaskan kunci untuk objek yang ditentukan; jika penelepon adalah pemegang kunci pada objek lain, kunci-kunci ini tidak dilepaskan.

Perhatikan bahwa objek yang disinkronkan menyimpan beberapa referensi, termasuk referensi ke utas yang saat ini memegang kunci, referensi ke antrean siap, yang berisi utas yang siap untuk mendapatkan kunci, dan referensi ke antrean tunggu, yang berisi utas yang menunggu pemberitahuan perubahan status objek.

Metode Pulse, PulseAll, dan Wait harus dipanggil dari dalam blok kode yang disinkronkan.

Keterangan untuk metode Pulse menjelaskan apa yang terjadi jika Pulse dipanggil saat tidak ada utas yang sedang menunggu.

Lihat juga

Berlaku untuk

Wait(Object, Int32)

Sumber:
Monitor.CoreCLR.cs
Sumber:
Monitor.cs
Sumber:
Monitor.CoreCLR.cs
Sumber:
Monitor.CoreCLR.cs
Sumber:
Monitor.CoreCLR.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap.

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

Parameter

obj
Object

Objek tempat menunggu.

millisecondsTimeout
Int32

Jumlah milidetik untuk menunggu sebelum utas memasuki antrean siap.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Utas panggilan tidak memiliki kunci untuk objek yang ditentukan.

Utas Wait yang memanggil kemudian terganggu dari status tunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Nilai millisecondsTimeout parameter negatif, dan tidak sama dengan Infinite.

Keterangan

Metode ini tidak kembali sampai memperoleh kembali kunci eksklusif pada parameter obj.

Utas yang saat ini memiliki kunci pada objek yang ditentukan memanggil metode ini untuk melepaskan objek sehingga utas lain dapat mengaksesnya. Pemanggil diblokir saat menunggu untuk memperoleh kembali kunci. Metode ini dipanggil ketika penelepon perlu menunggu perubahan status yang akan terjadi sebagai akibat dari operasi utas lain.

Penghentian waktu memastikan bahwa utas ini saat ini tidak terhalang untuk waktu yang tidak terbatas jika utas lain melepaskan kunci tanpa terlebih dahulu memanggil metode Pulse atau PulseAll. Ini juga memindahkan utas ke antrean siap, melewati utas lain di depannya dalam antrean tunggu, sehingga dapat mengambil kembali kunci lebih cepat. Utas dapat menguji nilai pengembalian dari metode Wait untuk menentukan apakah ia memperoleh kembali kunci sebelum waktu habis. Utas dapat mengevaluasi kondisi yang menyebabkannya memasuki status menunggu, dan jika perlu, panggil metode Wait lagi.

Saat utas Waitmemanggil , utas melepaskan kunci pada objek dan memasuki antrean tunggu objek. Utas berikutnya dalam antrean siap objek (jika ada) memperoleh kunci dan memiliki penggunaan objek secara eksklusif. Utas yang menjalankan Wait tetap berada dalam antrean tunggu sampai salah satu dari dua hal berikut terjadi: sebuah utas yang menahan kunci menjalankan PulseAll, atau utas tersebut merupakan urutan berikutnya dalam antrean dan utas yang menahan kunci menjalankan Pulse. Namun, jika millisecondsTimeout berlalu sebelum utas lain memanggil metode Pulse atau PulseAll objek ini, utas asli dipindahkan ke antrean siap untuk mengembalikan kunci.

Note

Jika Infinite ditentukan sebagai parameter millisecondsTimeout, metode ini akan memblokir tanpa batas waktu kecuali jika pemegang kunci memanggil Pulse atau PulseAll. Jika millisecondsTimeout sama dengan 0, utas yang memanggil Wait melepaskan kunci dan kemudian segera memasuki antrean siap untuk mendapatkan kembali kunci.

Pemanggil mengeksekusi Wait sekali, terlepas dari berapa kali Enter telah dipanggil untuk objek yang ditentukan. Secara konseptual, Wait metode menyimpan berapa kali pemanggil dipanggil Enter pada objek dan memanggil Exit sebanyak yang diperlukan untuk sepenuhnya melepaskan objek terkunci. Pemanggil kemudian memblokir sambil menunggu untuk memperoleh kembali objek. Ketika penelepon memperoleh kembali kunci, sistem memanggil Enter sebanyak yang diperlukan untuk memulihkan jumlah tersimpan Enter untuk pemanggil. Memanggil Wait hanya melepaskan kunci untuk objek yang ditentukan; jika penelepon adalah pemegang kunci pada objek lain, kunci-kunci ini tidak dilepaskan.

Note

Objek yang disinkronkan menyimpan beberapa referensi, termasuk referensi ke utas yang saat ini memegang kunci, referensi ke antrean siap, yang berisi utas yang siap untuk mendapatkan kunci, dan referensi ke antrean tunggu, yang berisi utas yang menunggu pemberitahuan perubahan status objek.

Metode Pulse, PulseAll, dan Wait harus dipanggil dari dalam blok kode yang disinkronkan.

Keterangan untuk metode Pulse menjelaskan apa yang terjadi jika Pulse dipanggil saat tidak ada utas yang sedang menunggu.

Lihat juga

Berlaku untuk

Wait(Object, TimeSpan)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap.

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

Parameter

obj
Object

Objek tempat menunggu.

timeout
TimeSpan

Yang TimeSpan menunjukkan jumlah waktu untuk menunggu sebelum utas memasuki antrean siap.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Utas panggilan tidak memiliki kunci untuk objek yang ditentukan.

Utas Wait yang memanggil kemudian terganggu dari status tunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Nilai timeout parameter dalam milidetik negatif dan tidak mewakili Infinite (-1 milidetik), atau lebih besar dari Int32.MaxValue.

Keterangan

Metode ini tidak kembali sampai memperoleh kembali kunci eksklusif pada parameter obj.

Utas yang saat ini memiliki kunci pada objek yang ditentukan memanggil metode ini untuk melepaskan objek sehingga utas lain dapat mengaksesnya. Pemanggil diblokir saat menunggu untuk memperoleh kembali kunci. Metode ini dipanggil ketika penelepon perlu menunggu perubahan status yang akan terjadi sebagai akibat dari operasi utas lain.

Penghentian waktu memastikan bahwa utas ini saat ini tidak terhalang untuk waktu yang tidak terbatas jika utas lain melepaskan kunci tanpa terlebih dahulu memanggil metode Pulse atau PulseAll. Ini juga memindahkan utas ke antrean siap, melewati utas lain di depannya dalam antrean tunggu, sehingga dapat mengambil kembali kunci lebih cepat. Utas dapat menguji nilai pengembalian dari metode Wait untuk menentukan apakah ia memperoleh kembali kunci sebelum waktu habis. Utas dapat mengevaluasi kondisi yang menyebabkannya memasuki status menunggu, dan jika perlu, panggil metode Wait lagi.

Saat utas Waitmemanggil , utas melepaskan kunci pada objek dan memasuki antrean tunggu objek. Utas berikutnya dalam antrean siap objek (jika ada) memperoleh kunci dan memiliki penggunaan objek secara eksklusif. Utas yang menjalankan Wait tetap berada dalam antrean tunggu sampai salah satu dari dua hal berikut terjadi: sebuah utas yang menahan kunci menjalankan PulseAll, atau utas tersebut merupakan urutan berikutnya dalam antrean dan utas yang menahan kunci menjalankan Pulse. Namun, jika timeout berlalu sebelum utas lain memanggil metode Pulse atau PulseAll objek ini, utas asli dipindahkan ke antrean siap untuk mengembalikan kunci.

Note

Jika TimeSpan yang mewakili -1 milidetik ditentukan untuk parameter timeout, metode ini akan memblokir tanpa batas waktu kecuali jika pemegang kunci memanggil Pulse atau PulseAll. Jika timeout adalah 0 milidetik, utas yang memanggil Wait melepaskan kunci dan kemudian segera memasuki antrean siap untuk mendapatkan kembali kunci.

Pemanggil mengeksekusi Wait sekali, terlepas dari berapa kali Enter telah dipanggil untuk objek yang ditentukan. Secara konseptual, Wait metode menyimpan berapa kali pemanggil dipanggil Enter pada objek dan memanggil Exit sebanyak yang diperlukan untuk sepenuhnya melepaskan objek terkunci. Pemanggil kemudian memblokir sambil menunggu untuk memperoleh kembali objek. Ketika penelepon memperoleh kembali kunci, sistem memanggil Enter sebanyak yang diperlukan untuk memulihkan jumlah tersimpan Enter untuk pemanggil. Memanggil Wait hanya melepaskan kunci untuk objek yang ditentukan; jika penelepon adalah pemegang kunci pada objek lain, kunci-kunci ini tidak dilepaskan.

Note

Objek yang disinkronkan menyimpan beberapa referensi, termasuk referensi ke utas yang saat ini memegang kunci, referensi ke antrean siap, yang berisi utas yang siap untuk mendapatkan kunci, dan referensi ke antrean tunggu, yang berisi utas yang menunggu pemberitahuan perubahan status objek.

Metode Pulse, PulseAll, dan Wait harus dipanggil dari dalam blok kode yang disinkronkan.

Keterangan untuk metode Pulse menjelaskan apa yang terjadi jika Pulse dipanggil saat tidak ada utas yang sedang menunggu.

Lihat juga

Berlaku untuk

Wait(Object, TimeSpan, Boolean)

Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs
Sumber:
Monitor.cs

Melepaskan kunci pada objek dan memblokir utas saat ini hingga memperoleh kembali kunci. Jika interval batas waktu yang ditentukan berlalu, utas akan memasuki antrean siap. Secara opsional keluar dari domain sinkronisasi untuk konteks yang disinkronkan sebelum menunggu dan memperoleh kembali domain setelahnya.

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

Parameter

obj
Object

Objek tempat menunggu.

timeout
TimeSpan

Yang TimeSpan menunjukkan jumlah waktu untuk menunggu sebelum utas memasuki antrean siap.

exitContext
Boolean

true untuk keluar dan memperoleh kembali domain sinkronisasi untuk konteks (jika dalam konteks yang disinkronkan) sebelum menunggu; jika tidak, false.

Mengembalikan

true jika kunci diperoleh kembali sebelum waktu yang ditentukan berlalu; false jika kunci diperoleh kembali setelah waktu yang ditentukan berlalu. Metode tidak kembali sampai kunci diterima kembali.

Atribut

Pengecualian

Parameternya obj adalah null.

Wait tidak dipanggil dari dalam blok kode yang disinkronkan.

Utas yang memanggil Tunggu kemudian terganggu dari status tunggu. Ini terjadi ketika utas lain memanggil metode utas Interrupt() ini.

Parameter timeout negatif dan tidak mewakili Infinite (-1 milidetik), atau lebih besar dari Int32.MaxValue.

Keterangan

Untuk informasi selengkapnya tentang API ini, lihat Komentar API tambahan untuk Monitor.Wait.

Lihat juga

Berlaku untuk